【あだぷたーぱたーん】

Adapterパターン とは?

最終更新:
💡 変換プラグのように、形の違うインターフェースをつなぐ仕組み。

互換性のないインターフェースを変換し、既存クラスをそのまま再利用できるようにするデザインパターン。

📌 このページのポイント
Adapter:呼出しの形を合わせる 利用側 send(text) Adapter send(text) 既存クラス 別の形式 例:send(text) の内側から writeMessage(text) を呼び出す 引数・戻り値・エラーの意味も確認
オブジェクトを包むAdapterの説明例。呼出しの形が合っても、動作の意味の確認が必要。
ひよこ ひよこ
Adapterパターンって、変換プラグみたいなもの?
ペンギン先生 ペンギン先生
そうだね。利用側が期待するインターフェースと、既存のクラスが提供するものが違うとき、間に変換役を置いてつなぐ仕組みだよ。
ひよこ ひよこ
例えばどんな違いを吸収するの?
ペンギン先生 ペンギン先生
例えば利用側がsend(text)で呼びたいのに、外部ライブラリがwriteMessage(text)を提供している場合。AdapterのsendからwriteMessageを呼ぶ、といった形で合わせるんだ。
ひよこ ひよこ
名前を変えるだけなの?
ペンギン先生 ペンギン先生
名前だけでなく、引数や戻り値の形を変換することもあるよ。ただし、意味が合わない処理まで名前を合わせるだけで互換になるわけではない。エラー時の動作なども確かめる必要があるね。
ひよこ ひよこ
既存のコードを直接直したら?
ペンギン先生 ペンギン先生
変更できるなら、それが簡単な場合もあるよ。外部ライブラリなどを直接変えずに利用したいときは、Adapterに違いをまとめると利用側の各所へ変換処理を広げずに済むんだ。
ひよこ ひよこ
Facadeとはどう違うの?
ペンギン先生 ペンギン先生
Adapterは期待されるインターフェースに合わせることが目的。Facadeは複数の機能などを使いやすい窓口へまとめることが目的だよ。どちらも包む形を取れても、解決したい問題が違うんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Adapterパターン」って出てきたら「形の違うインターフェースを変換してつなぐ仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Adapter Pattern」 = 適合させるもの、のパターン
💬 変換プラグのように、接続する形の違いを吸収するイメージだよ。プログラムでは呼出しの形や引数・戻り値などを、利用側が期待する形に合わせる。

参考資料

← 用語集にもどる