Closed4
Adapter パターン
Adapter パターンとは
定義
非互換なインターフェースのオブジェクト同士の協働を可能にする構造関連のデザインパターン
クラス図
継承を用いた場合
増補改訂版Java言語で学ぶデザインパターン入門から引用
委譲を用いた場合
増補改訂版Java言語で学ぶデザインパターン入門から引用
Adapter パターン適用フロー
STEP1: 適用に値する状況かどうかを確認する
以下いずれかなら次のステップに進む。
- 使用したい既存クラスのインターフェースが自分のコードと互換性がない
- 既存のいくつかのサブクラスを再利用したいが、 スーパークラスに追加できる共通機能が欠けている
STEP2: メリット > デメリットであることを確認する
メリット
- 単一責任の原則に準じる
- インターフェースやデータの変換処理を主要なビジネスロジックから分離できる
- 開放閉鎖の原則に準じる
- 既存のクライアント側を変更することなく、 新しい種類のアダプターを追加できる
デメリット
- コードが複雑になる。Adaptee を書き直す方が簡単で優れている場合がある。
STEP3: コードを書く
2 つの非互換なクラスがあることを確認
- 有益だが変更できないクラス
- このクラスを使いたいクライアントクラス
クライアントインターフェイスとアダプタークラスを作成
アダプタークラスに、Adaptee への参照を格納するためのフィールドを追加する。コンストラクタで初期化するのが一般的だが、メソッドの呼び出し時に渡してもよい。
実際の仕事のほとんどは Adaptee に任せて、インターフェースやデータ形式の変換だけを行うようにする。
Adapter パターンの現実的な実装例
参考リンク
ここに書いてあることから多く影響を得ている。
上記は和訳が少しわかりづらいのでデザインパターンを全く知らない人は以下を通読とするといい。
このスクラップは2023/10/02にクローズされました