# Java言語で学ぶデザインパターン 学習メモ
- Iterator 1つ1つかぞえあげる
- Adapter 一皮被せて再利用
- Template Method 具体的な処理をサブクラスにまかせる
- Factory Method インスタンス生成をサブクラスにまかせる
- Singleton たった一つのインスタンス
- Prototype コピーしてインスタンスを作る
- Builder 複雑なインスタンスを組み立てる
- Abstract Factory 関連する部品を組み合わせて製品を作る
- Bridge 機能の階層と実装の階層を分ける
- Strategy アルゴリズムをごっそり切り替える
- Composite 容器と中身の同一視
- Decorator 飾り枠と中身の同一視
- Visitor 構造を渡り歩きながら仕事をする
- Chain Of Responsibility 責任のたらい回し
- Facade シンプルな窓口
- Mediator 相手は相談役一人だけ
- Observer 状態の変化を通知する
- Memento 状態を保存する
- State 状態をクラスとして表現する
- Flyweight 同じものを共有して無駄をなくす
- Proxy 必要になってから作る
- Command 命令をクラスにする
- Interpreter 文法規則をクラスで表現する
※忘れやすいところだけ抜粋
- 階層構造
◁ー is-a
- 実装
◁… is-a
- 集約
←◇ has-a / aggregation
- Private
# Protected
+ Public
~ Package
- デザインパターンはクラスライブラリそのものではない
- より一般的な概念
- しかし、クラスライブラリの中でデザインパターンは使われている
- プログラムを完成品として見ないこと
- どのような機能が拡張される可能性があるか?
- その機能拡張を行うときに修正が必要になるのはどのクラスか?
- 修正が必要なのはどのクラスか?
- 図は見るのではなく、読むこと
- 自分で例を考えること
- 役割を理解すること --白雪姫の役は誰か?