Adapter パターンとは
インターフェースが異なっている2つの間に入り、そのずれを埋めるためのパターン。既存のクラスに対して修正を加えることなく、インタフェースを変更することができる。
example
Bannerクラス
<?php class Banner { private $string; public function __construct(string $string) { $this->string = $string; } public function showWithParen() { echo "(" . $this->string . ")" . PHP_EOL; } public function showWithAster() { echo "*" . $this->string . "*" . PHP_EOL; } }
PrintInterface
<?php interface PrintInterface { public function printWeak(); public function printStrong(); }
PrintBannerクラス
<?php class PrintBanner extends Banner implements PrintInterface { public function printWeak() { $this->showWithParen(); } public function printStrong() { $this->showWithAster(); } }
main
<?php $p = new PrintBanner("Hello"); $p->printWeak(); $p->printStrong();
実行結果
(Hello) *Hello*
役割
- Target: PrintInterface
- Client: main
- Adaptee: Bannerクラス
- Adapter: PrintBannerクラス
まとめ
実際に役立つ場面としては、バージョンアップ(互換性)が挙げられる。 古い版と新しい版とを共存させて、メンテナンスを楽に行うためにAdapterパターンが役立つことがある。
関連パターン
- 作者: 結城浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2004/06/19
- メディア: 大型本
- 購入: 51人 クリック: 762回
- この商品を含むブログ (399件) を見る