なぜデザインパターンは必要か


最初に

デザインパターンの内容を詳しく紹介する記事ではありません。
なるほど、覚えておきたい!というモチベーションをアップさせるための記事です。

対象

動くプログラムを書ける人。
でもオブジェクト指向を活用した書き方はできてない人。

デザインパターン例(Adapter パターン)

そもそもデザインパターンとは、をAdapterパターンで紹介します。

もともと下記のクラスがありました。

Adaptee.java
public class Adaptee{
    public void method1(){
     System.out.println("method1");
    }

    public void method2(){
     System.out.println("method2");
    }
}

ここで、method1()、method2()と同じ機能をnewMethod1()、newMethod2()
をインタフェースとして実装してほしい、と言われたとします。
デザインパターンを知らないでこの要求があった場合、
Adapteeクラス内に実装しようとするのではないでしょうか。
それをAdapterパターンに即すと下記のようになります。

まず要求インタフェース(メソッド)が定義されたを含む下記クラスを作成します。

Target.java
public interface Target{
    public abstract void newMethod1();
    public abstract void newMethod2();
}

それからTarget.javaとAdaptee.javaを取り込んだ下記クラスを作成します。

Target.java
public class Adapter extends Adaptee implements Target{
    public void newMethod1(){
     method1();
    }

    public void newMethod2(){
     method2();
    }
}

使うときは下記です。

Client.java
public class Client{
    public static void main(String[] args){
    Target target = new Adapter();
    target.newMethod1();
    target.newMethod2();
    }
}

こんな感じで、こうゆうときはこうゆう風に書く!という定石集的なものがデザインパターンです。

メリット

・プログラムを組むときの方針がわかる
パターンが自分の中にあれば、それが適応できるプログラムに出会ったとき1から作るより遥かに楽です。
また、パターンを丸暗記する必要もなく、概要だけ把握し、そのパターンに出会ったときに読み返せばよいのです。

・他者のコードの意図が読めるようになる
自分が作る際だけでなく、他の人のコードを読んだときに「あ、これはあのパターン」と思えるようになります。
そしてそう思えるということは、コードの意図も読み取れるということです。

参考にしたサイト

参考にした本

増補改訂版Java言語で学ぶデザインパターン入門
デザインパターンといえばこれ、という本です。