Adapterパターンの雑感
メモ
- 既存のクラスがあり、そのインターフェースが使いにくい、求めているインターフェースと異なる場合に適用するとよい
- Adapterパターンによってクライアントが期待するインターフェースに変換することができる
- アダプタの実装は、ターゲットインターフェースの大きさや煩雑さにより必要な作業量が変わる
- コンポジションを使うオブジェクトアダプタと多重継承が前提のクラスアダプタが存在する
- なぜオブジェクトをラップするか
- アダプタは「オブジェクトのインターフェースを変換するために」オブジェクトをラップする
- デコレータは「新しい振る舞いや責任を追加するために」オブジェクトをラップする
- ファサードは「インターフェースの簡素化のために」オブジェクトをラップする
- 複数のインターフェースをラップするのか
- Facadeパターンを使おう。Adapterパターンの目的はインターフェースを「変換」するためである
- システムに古いインターフェースを期待する部分と新しいインターフェースを期待する部分がある
- 双方向アダプタを用いる。アダプタは関連する複数のインターフェースを実装する
実例
- Javaの古いインターフェースであるEnumerationインターフェースを使っているが、新しいインターフェースであるIteratorを使いたい。こういう場合にAdapterクラスを作成しIteratorインターフェースを実装する
- クライアントはIterator型のオブジェクトとしてEnumerationを透過的に呼び出すことができる
実装
- 時間がない