読者です 読者をやめる 読者になる 読者になる

Every day is a new day

ひつじのプログラミング日記。

Adapter パターン

デザインパターン

最近デザインパターンの勉強からちょっと離れていたのだけど、大規模Webアプリケーションにおける複雑性とアーキテクチャ設計に関する一考察 - Qiitaというとても参考になる記事の中で、

連携システムのインタフェースが、アプリケーション全体に漏れ出すと制御不能な状態に陥るので、Adapterなどで腐敗防止層を実装し、外部システムの影響を局所化すること。

とあり、このAdapterという単語をちゃんと理解するために、また色々と調べてみました。

ということで引用

既存のクラスに変更を加えることなく、本来関連のない型として使用するための方法。似た実装も含めて使用頻度の高い実装方法。

継承を使ってクラスを拡張する代わりに、あらかじめ拡張するメソッドをインターフェースにしておく手法。メッセージングのときに、後付けで必要なインターフェースを追加するときに使う。データ自体と操作するメソッドを分離するときによこう使われる。が、最初からわかっていれば、Interface で十分な気も。

インタフェースをそろえるためにラッパーを用意することはよくある。 普通のOOPの使い方である。

第2章では Adapter パターンを学びます。adaptという単語は日本語で「適合させる」という意味で、adapterとは「適合させるもの」という意味になります。Adapterパターンは、インタフェースに互換性の無いクラス同士を組み合わせることを目的としたパターンです。

まったくインターフェースに互換性のないクラス同士を組み合わせるためのパターンです。 クライアントコードを変えずに機能拡張するのが、このパターンの目的です。クライアントコードで利用されている クラスA(Target) に、クラスB(Adaptee)の機能を使ってクラスAを 機能拡張したい場合に用います。

色々読んてみた結果・・・

うーん、ざっくり言ってラッパーってことですかね。Facadeパターンっぽくもあるのかな?でもFacadeパターンは処理をまとめてシンプルな呼び出しにするのに対し、Adapterパターンはインターフェースの統一を図っているのでしょうね。