Adapterパターン
Head First デザインパターンのメモ。
Adapterパターン
クラスのインターフェースをクライアントが期待する別のインターフェースに変換します。
アダプタは互換性のないインターフェースのためにそのままでは連携できないクラスを連携させます。
2つの形式
オブジェクトアダプタとクラスアダプタの2つの形式がある。
クラスアダプタには多重継承が必要で、コンポジションを使う代わりにサブクラス化する。
Adapterパターン実装
// 鴨インターフェース public interface Duck() { public void quack(); public void fly(); } // 七面鳥インターフェース public interface Turkey() { public void gobble(); public void fly(); } // 七面鳥クラスがDuckと同じインターフェースを持つようにアダプタを作成 public class TurkeyAdapter implements Duck { Turkey turkey; public TurkeyAdapter(Turkey turkey) { this.turkey = turkey } public void quack() { turkey.gobble(); } public void fly() { for (int i=0; i < 5; i++) { turkey.fly(); } } }