「こんにちは、アミーゴ! 今日は、«アダプター»とは正確に何なのかを説明します。このトピックについて学習した後、入出力ストリームについての理解がさらに深まることを願っています。」

あなたのプログラムが他のプログラマ/会社によって書かれた 2 つのフレームワークを使用していると想像してください。どちらのフレームワークも非常に優れており、OOP 原則 (抽象化、ポリモーフィズム、カプセル化) を使用しています。これらを組み合わせると、プログラムが実行する必要がある内容がほぼ完全にカバーされます。あとは簡単なタスクだけが残ります。1 つのフレームワークで作成されたオブジェクトを他のフレームワークに渡す必要があります。しかし、両方のフレームワークは完全に異なり、「お互いのことを知りません」、つまり、共通のクラスがありません。何らかの方法で、あるフレームワークのオブジェクトを別のフレームワークのオブジェクトに変換する必要があります。
このタスクは、「アダプター」テクニック (デザイン パターン)を適用することで見事に解決できます。
Javaコード | 説明 |
---|---|
|
これはアダプターの設計パターンを反映しています。 基本的な考え方は、MyClass クラスが 1 つのインターフェイスを別のインターフェイスに変換 (適応) するということです。 |
「もっと具体的な例を教えてもらえますか?」
「OK。各フレームワークに独自の「リスト」インターフェースがあるとしましょう。それらは次のようになります。」
Javaコード | 説明 |
---|---|
|
最初の ( Alpha ) フレームワークのコード AlphaList は、フレームワーク コードがフレームワークを使用するコードと対話できるようにするインターフェイスの 1 つです。 |
|
AlphaList Manager AlphaListManager はフレームワーク内のクラスです。その createList メソッドはAlphaListオブジェクト |
|
2 番目 (ベータ版) フレームワークのコード。 BetaList は、フレームワーク コードがフレームワークを使用するコードと対話できるようにするインターフェイスの 1 つです。 BetaSaveManager はフレームワーク内のクラスです。そのsaveListメソッドはBetaListオブジェクト |
|
AlphaListインターフェースからBetaListインターフェースに変換する «Adapter» クラス ListAdapterクラスは、2番目のフレームワークからBetaListインターフェイスを実装します。 誰かがこれらのメソッドを呼び出すと、クラス コードは呼び出しをリスト変数 (最初のフレームワークのAlphaList)に「転送」します。 AlphaListオブジェクトがListAdapterコンストラクターに渡されます。 setSizeメソッドは、次のルールに従って動作します。リストのサイズを増やす必要がある場合は、空 (NULL) の項目を追加します。リストのサイズを減らす必要がある場合は、末尾の項目を削除します。 |
|
使用例 |
「あなたの最後の例が何よりも気に入りました。非常に簡潔で分かりやすかったです。」
GO TO FULL VERSION