DesignPatterns > Adapter

Adapter


目的

あるクラスのインタフェースを、クライアントが求める他のクラスのインタフェースに変換する。

構造

クラスに適用する場合

オブジェクトに適用する場合

注釈

  • クラスに適用する形では、Adapteeのメソッドをオーバライドしたり、Adapteeのprotectedメソッドを呼び出したりできる。オブジェクトに適用する形では、Adapteeを継承する複数のサブクラスがまとめて利用可能となる。
  • 通常、Adapterパターンは、事後(Adapteeクラスが設計された後)に適用されるものである。




Pluggable Adapterの適用例



この例では、delegateオブジェクトを使用してPluggable Adapterを実現している。
任意のツリー構造を図示するためのTreeDisplayクラスを設計するのだが、
どのようなインタフェースを持つTreeオブジェクトにも適用できるようにしたい。
そこで、ツリー構造にアクセスするための抽象操作としてGetChildren()およびCreateGraphicNode()を
持つTreeAccessDelegateクラスを定義する。
TreeDisplayでは、これらの抽象操作を用いてBuildTree()を実装する。
いま具体的に、ディレクトリツリーの構造を表示するDirectoryBrowser()を考える。
DirectoryBrowser()は、ツリー構造を表示するために、TreeDisplay()を利用したい。
そのためには、TreeAccessDelegateを継承し、GetChildren()のCreateGraphicNode()実体を定義して、
TreeDisplayにSetDelegate(this)すればよいことになる。


最終更新:2012年02月07日 12:04