プログラミングの魔物

エラー、バグ、仕様変更と戦うブログ

2.Adapter 一皮かぶせて再利用

異なるインターフェース間の仲介を行うためにインターフェースをラッピングする。
継承と委譲の2種類がある。

f:id:p-monster:20121218185719p:plain

Target・・・必要とされるAPIの定義
Client・・・Targetのメソッドを使って仕事をする
Adaptee・・・すでに用意されている実装。変更が困難
Adapter・・・AdapteeのメソッドにTargetのAPIをかぶせる

変更が困難な2つのシステムがあるとする。1方のシステムにもう1方を組み込みたいが、インターフェースが異なるためそのままでは利用できない。
そこでAdapterを用意し2つのシステムを仲介する。
たとえば、バージョンアップ後の互換性を保つために古いバージョンで提供されていたAPI群を新しいバージョンのAPIで実装するなど。

関連しているパターン

Bridge・・・機能の階層と実装の階層を結びつける。
Decorator・・・AdapterはAPIのズレを埋める。DecoratorはAPIを変えずに機能を追加。

参考:

増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門