Open7
Ruby によるデザインパターンを読んで
を読んで、学んだこと、感想をメモしていく。
パターンのためのパターン
GoF の一般的な原則、メタ設計パターン
- 変わるものを変わらないものから分離する
- インターフェイスに対してプログラムし、実装に対して行わない
- 継承より集約
- 委譲、委譲、委譲
- 必要になるまで作るな
集約は、オブジェクトが何かの一種である (is-a-kind-of) 関係は避けて、何かを持っている (has-a) 関係にするということ。
Template Method パターン
Template Method パターンの一般的な考え方は、骨格となるメソッドを持った抽象基底クラスを構築すること。この骨格となるメソッド (テンプレートメソッド) は抽象メソッドを呼ぶことによって変更に対応するような処理を扱う。
Template Method の具象クラスによってオーバーライドできる非抽象メソッドのことを、フックメソッドと呼ぶ。
Strategy パターン
Strategy パターンは、Template Method パターンと同様の問題に対する委譲ベースのアプローチによる解。
アルゴリズム中の変わる部分を抜き出してサブクラスへと押し込む代わりに、アルゴリズムのパターンごとにばらばらのオブジェクトとしてシンプルに実装する。
異なるストラテジオブジェクトをコンテキストに対して提供することでアルゴリズムに多様性をもたらす。
Design Patterns in Ruby | Refactoring.Guru