- すでに提供されているものを必要な形に変換する - Wrapperパターンとも呼ばれる - 登場人物 - Target - 必要なもの - Client - Targetを使う人(呼び出す人) - Adaptee - 適合される人 - すでに提供されているもの - Adapter - Adapteeのメソッドを使ってTarget役を満たす人 - 使い道 - 既存のリソースを再利用 - 既存リソースに変更を加えるのではなくAdapterパターンを使う - 新しいAPIに適合させる - バージョンアップ時に古い版と新しい版を共存させる - APIが異なる2つを繋げる ## 継承を使う - AdapterはAdapteeを継承する - AdapterがTargetのIFに合ったメソッドを実装し、内部ではAdapteeのメソッド(継承しているので親のメソッド)を呼ぶ - TargetがインターフェースであればAdapteeをTargetのIFに合うように拡張すればOK ## 委譲を使う - AdapterはTargetを継承する - Adapterは内部でAdapteeのインスタンスを持つ - AdapterはTargetのIFに合ったメソッドを実装し、内部ではAdapteeに委譲する - AdapteeもTargetもクラスで単一継承しかできない言語の場合は委譲を使うしかない