2012年11月21日水曜日

デザインパターンのおさらい

初級プログラマのMOTIです。
中級を目指して勉強中です・・。
何か間違いやアドバイスなどがありましたら教えてください。

今日はデザインパターンのおさらいをします。

知っていれば開発時の会話もスムーズにできるし
 (パターン名を聞くだけで、
  どういう種類のクラスやインタフェースがあって
  それらが互いにどういう関係にあるかがわかります。)

なにより、クラス名、メソッド名を見るだけで使い方のイメージがつくようになります。
よく使われるデザインパターンだけでも知っておくと便利ですね。


以下はデザインパターン考案者の言葉です。
  「コンピュータのプログラミングで、
  素人と達人の間ではびっくりするほどの生産性の差があるが、
  その差はかなりの部分が経験の違いからきている。
  達人は、さまざまな難局を、何度も何度も耐え忍んで乗り切ってきている。
  そのような達人たちが同じ問題に取り組んだ場合、
  典型的にはみな同じパターンの解決策にたどり着くのだが、
  これがデザインパターンである (GoF)。」

達人者達がたどり着いた典型的なパターン、身に着けておいて損はないです。
※背景色の意味
よく見かけるザインパターン。
意識しなくても使ってるデザインパターン。

 生成に関するパターン


   Factory Method パターン
    インスタンス生成をサブクラスに任せ、状況に応じて適切に生成する方法
    createメソッドの返却するインスタンスが動的に変わる。
    

   Singleton パターン
    インスタンスを1回しか生成しない方法
    getInstanceメソッドでインスタンスを取得する。

   Builder パターン
    複雑なインスタンスを組み立てて生成する方法
  
     (abstractなBuilderクラスを作り、生成プロセスはConcreateBulderクラスに任せ
      DiretorクラスのconstractorメソッドでBuilderクラスのメソッドを実行するパターン)

    

 構造に関するパターン


   Proxy パターン
     同様のインスタンスを生成するために、原型のインスタンスを複製する方法
     利用したいメイン的な処理をするクラスを生成し使用する。
     (コンポジション(集約)してデリゲーション(委譲)する。)
     Decoratorとの違いは、勝手にフックされてること。

   Adapter パターン
    元々関連性のない2つのクラスを接続する方法
           (インタフェースが一致しないクラスを再利用する)
      インヘリタンス(継承)を利用したAdapter
          利用したいクラスのサブクラスを作成し
          そのサブクラスに対して必要なインタフェースを実装する。
      デリゲーション(委譲)を利用したAdapter
          利用したいクラスのインスタンスを生成し
          そのインスタンスを他クラスから利用する。

   Decorator パターン
    既存のオブジェクトに新しい機能を動的に追加できるようにする方法
 
    利用したいメイン的な処理をするクラスを生成しメソッドを利用しフックする。
          インスタンスを包むように飾りつけできる構造。


   Facade パターン
    関連するクラス群を使用するための手続きを、一つのクラスに集約する方法
    処理はいっぱいでも、窓口を1つにする。

 振る舞いに関するパターン


   Observer パターン
    インスタンスの変化を他のインスタンスから監視できるようにする
    リスナーのこと。


   Iterator パターン
     複数の要素を内包するオブジェクトのすべての要素に順にアクセスする方法

   Template Method パターン
    具体的な処理はサブクラスに任せ、実装を変えることで処理が変えられるようにする方法
    abstractクラスのこと。

   Strategy パターン
    アルゴリズムをごっそり切り替えるパターン

   Mediator パターン
    オブジェクト同士の依存関係を削減し、結合度を下げる方法
    処理はいっぱいでも仲介役は1つにする。
    (※Facadeパターンは単方向、Mediatorパターンは双方向の構造)



クラス図とサンプルソースも順次アップしていきますね。
ここであげたデザインパターンは一般的な物です
他にも重要なパターンはいくつかあるので、後で追記します。

0 件のコメント:

コメントを投稿









ロリポップ!なら月々105円から

WordPress、MovableTypeなどの簡単インストール、

アクセス解析、ウェブメーラーが標準装備!






プロペシア