昨日と今日、GoFの23パターンを本気で勉強した

実はデザインパターンをちゃんと理解してなかったので、基本中の基本であるGoFの23パターンを中心に2日間集中して勉強してみました。
実際には.NETの中にかなり取り入れられてますが、改めて再認識しました。
GoFで定義されたそのままであれば単純ですけど、応用していくとパターンの合わせ技みたいになってきて結構複雑です。
デザインパターンの本はJavaのものしか出てないらしいですね。ネットではJavaのソースを.NETになおしたものとかがありますが...


【生成に関するパターン】

  • Factory Method インスタンス化はサブクラスに任せる
  • Abstract Factory 具象クラスを明確にせずに生成するI/Fがある。(クラス名を引数としたインスタンス生成など)
  • Builder 複雑なクラスの集まりを生成するのに、生成するためのクラスをつくる
  • Prototype インスタンス生成にnewじゃなくcloneを使う
  • Singleton ただ一つのインスタンスを作る


【構造に関するパターン】

  • Adaptor あるI/F(抽象クラス)に既存のクラスを適合させる
  • Bridge 機能を拡張するクラスと実装を拡張するクラスを分離しておく
  • Composite 全体と部分という構造を表現。コンテナ
  • Decorator オブジェクトになにか処理を次々に追加していく
  • Facade(ファサード) 複雑なシステムに対してシンプルな窓口を提供する
  • Flyweight 生成するインスタンスの数を減らすため共有化する
  • Proxy 生成コストの高いオブジェクトは実際に必要になったときに生成させる


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

  • Chain of Responsibility 要求を次々に連鎖させるルールを提供
  • Command 操作を抽象化する(ToStringなど)
  • Interpreter 複雑な処理をさせるため簡易言語的なモノを提供
  • Iterator 列挙
  • Mediator 調停者に各colleagueは聞くようにする
  • Memento 取り消し処理の実現
  • Observer イベントドリブン
  • State 状態ごとにオブジェクトをつくって管理する
  • Strategy アルゴリズムの集合をカプセル化する。やり方を外から決めれるようにする
  • Template Method テンプレートのこと
  • Visitor データ構造と処理を分離し、データを渡り歩くVisitorを用意する

あなたのコードを[賢く]するデザインパターンJavaプログラミング

あなたのコードを[賢く]するデザインパターンJavaプログラミング

あなたのコードを賢くするデザインパターンJavaプログラミング

増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門

Java言語で学ぶデザインパターン入門

オブジェクト脳のつくり方―Java・UML・EJBをマスターするための究極の基礎講座

オブジェクト脳のつくり方―Java・UML・EJBをマスターするための究極の基礎講座

オブジェクト脳のつくり方