Rubyでデザインパターン① デザインパターン概要
参考記事
デザインパターンとは
クラスの責務分割のパターン
GoFのデザインパターン
生成
Abstract Factory Factory Method Singleton Builder Prototype
構造
Adaptor Bridge Composite Decorator Facade Flyweight Proxy
振る舞い
Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method Visitor
デザインパターンの効果
1. 変更容易性
2. 理解容易性
前提知識
継承
is-aの関係
コンポジション
has-aの関係 moduleとかオブジェクトの注入とか
ポリモーフィズム
問題解決の着眼点
クラスの責務分割はおおまかに3パターン
1. 変更要素の分離
アプリケーション内で固定化している部分と変動している部分をクラスとして分離する。 例1) Stateパターン: 「状態」を変動要素として切り出す 例2) Strategyパターン: 「アルゴリズム」を変動要素として切り出す
2. 間接層の道入
目的は、クラスとクラスの結合度を弱めることで 一方のクラスの変更が他方のクラスに影響を与えにくいようにすること。 例1) Proxyパターン 例2) Adaptorパターン 本来使用したい機能をもっているクラスと、それを使用するクラスの直接結合を避け、結合度を下げている。
3. 複雑さの軽減
分割をすることで、一つのクラスの責務を小さくする。 →理解容易性、変更容易性があがる