Facadeパターン
Head First デザインパターンのメモ。
Facadeパターン
サブシステムの一連のインターフェースに対する、統合されたインターフェースを提供します。
ファサードは、サブシステムをより使いやすくする高水準インターフェースを定義します。
Facedeパターン実装
ホームシアターを使って映画を見る場合
public class HomeTheaterFacade { Amplifier amp; Tuner tuner; DvdPlayer dvd; // ...省略 public HomeTheaterFacade(Amplifier amp, Tuner tuner, DvdPlayer dvd, // ... 省略 ) { this.amp = amp; this.tuner = tuner; this.dvd = dvd; // ... 省略 } // すべての作業を行うメソッド内に手順をまとめる public void watchMovie(String movie) { popper.on(); popper.pop(); light.dim(10); screen.down(); projector.on(); projector.wideScreenMode(); amp.on(); amp.setDvd(dvd); amp.setSurroundSound(); amp.setVolume(5); dvd.on(); dvd.play(movie); } }
似たようなパータンの目的の違い
Decorator = インターフェースを追加せずに責務を追加する
Adapter = あるインターフェースを別のインターフェースに変換する
Facade = インターフェースをより簡潔にする