Adapterパターン

2020/10/24 00:15

GoFのAdapterパターンについて動画でわかりやすく解説しています。インターフェースを変更しにくいクラスを別のインターフェースに結合させるクラスを作成して、互換性のないインターフェースのクラスを協調して動作させる事ができるようになります。Decoratorパターンとの差異についても言及しています。15分程度の動画です。

Adapterパターンとは

GoFのデザインパターンの一つです。インターフェースを変更しにくいクラス( Adaptee Class )を別のインターフェース(Target Interface)と協調できるように結合できるクラス( Adapter Class )を作成する手法です。結果、インターフェースに互換性がないクラス同士を組み合わせて動作できるようになります。

例えば「既に外部ライブラリ等で提供されている汎用的なクラスを、実装しているシステムで定義したインターフェースに合わせたい」というような状況がよくあると思います。そういうケースでAdapterパターンは有効に作用するでしょう。

Decoratorパターンとの類似性

本パターンはDecoratorパターンと大変よく似た構造になります。ただし、パターンは目的や背景が重要なのでDecoratorパターンの主目的である「拡張を動的にして柔軟にしたい」ということと、Adapterパターンの主目的である「インターフェースの差異を吸収したい」という目的の違いに着目すると理解が捗ると思います。

この結果、Decoratorパターンの場合にはDecorateする側とされる側のインターフェースが同一のものになる事が殆どですし、Adapterパターンの場合には全く別のインターフェースによって操作できるようになります。

この記事を書いた人

佐藤 正志

サークルアラウンド株式会社 代表取締役