1. ホーム
  2. oop

[解決済み] adapter-Any real example of Adapter Pattern [クローズド].

2023-02-09 08:43:52

質問

を使ったデモをしたいのですが アダプタのパターン の使い方をチームに示したいと思っています。私は多くの本や記事を読みました。誰もが、コンセプトを理解するのに役立つ例 (形状、メモリ カード、電子アダプタなど) を挙げていますが、実際のケーススタディは存在しません。

Adapter Patternの事例があれば教えてください。

p.s. 私はstackoverflowで既存の質問を検索しようとしましたが、答えを見つけられなかったので、新しい質問としてそれを投稿します。もしこれに対する回答がすでにあることを知っているなら、リダイレクトしてください。

どのように解決するのですか?

Adapter の多くの例は、些細な、あるいは非現実的なものです ( 矩形 vs. レガシー矩形、ラチェット vs. ソケット , 角ペグと丸ペグ , ダック vs. ターキー ). さらに悪いことに、多くは 複数のアダプタを表示することができません。 ( 誰かがJavaのArrays.asListをアダプタパターンの例として引用しました。 ). のインターフェイスを適応させることで 1つのクラス のインターフェイスを別のクラスで動作するように適応させることは、GoF Adapter パターンの例としては弱いように思われます。このパターンは継承とポリモーフィズムを使うので、良い例では 異なるアダプターのための複数のアダプターの実装 .

最良の例 の第26章にあります。 UMLとパターンの適用。オブジェクト指向分析・設計と反復開発入門(第3版) . 以下の画像は、この本のFTPサイトで提供されている講師用資料から引用しています。

最初のものは、アプリケーションが、機能的には類似しているが (たとえば、税金計算機、会計モジュール、クレジット認証サービスなど)、異なる API を持つ複数の実装 (adapttees) を使用できることを示しています。税金の計算、売上の計上、クレジットカードの承認など、考えられるさまざまな方法を扱うために、ドメイン層のコードをハードコーディングするのは避けたいものです。これらはすべて外部モジュールであるため、コードを変更することができません。アダプタを使用することで、ドメイン層のコードが常に同じインターフェイス (IWhateverAdapter インターフェイス) を使用するのに対して、アダプタ内でハードコーディングすることができます。

上の図では、実際のアダプターは見えません。しかし、次の図では、多相の呼び出しで postSale(...) を多相的に呼び出し、SOAP を介して SAP システムに売上を計上する様子を示しています。