開発プロセス中に、クライアントと提供されたインターフェイスが必要とするインターフェイスが互換性がないことがわかります。特別な理由でクライアントインターフェイスを変更することはできません。この場合、アダプターモードが必要な既存のインターフェイスと互換性のないクラスに適応する必要があります。アダプターを使用すると、古いコードを変更せずに使用できます。これはアダプターの能力です。
適応モードは、既存のインターフェイスと互換性のないクラスとの間の適応に使用できます。このモードを使用しているオブジェクトは、新しいインターフェイスで別のオブジェクトをラッピングしているため、ラッパーとも呼ばれます。
表面的には、アダプターモードは外観モードによく似ています。それらはすべて、他のオブジェクトを包み、レンダリングするインターフェイスを変更する必要があります。 2つの違いは、インターフェイスの変更方法です。外観要素は、追加のオプションを提供しない簡素化されたインターフェイスを提示し、一般的なタスクを促進するためにいくつかの仮定を作成することもあります。アダプターは1つのインターフェイスを別のインターフェースに変換しますが、これは特定の機能をフィルタリングせず、インターフェイスを簡素化しません。クライアントシステムAPIが使用できない場合は、アダプターが必要です。
基本理論
アダプターモード:クライアントコードを変更せずにインターフェイスをクライアントが必要とするインターフェイスに変換して、互換性のないコードが連携できるようにします。
アダプターは主に3つの役割で構成されています。
(1)クライアント:インターフェイスを呼び出すクラス
(2)アダプター:クライアントインターフェイスとインターフェイスを提供するサービスを提供するために使用されるクラス
(3)アダプター:サービスを提供しますが、クライアントインターフェイスの要件と互換性がありません。
アダプターモードの実装
1.最も簡単なアダプター
アダプターモードはあなたが思うほど複雑ではないので、最も簡単な例を見てみましょう。
クライアントは、追加計算の方法を呼び出します。
var result = add(1,2);
ただし、ADDメソッドを提供することはなく、同じ類似の機能を備えた合計メソッドを提供しました。
関数合計(v1、v2){return v1 + v2;}クライアントとサーバーの変更を避けるために、ラッパー関数を追加します。
関数add(v1、v2){reutrn sum(v1、v2);}これは最もシンプルなアダプターモードです。2つの互換性のないインターフェイスの間にラッパーメソッドを追加し、この方法を使用して2つを接続してそれらを連携させます。
2。実用的なアプリケーション
フロントエンドフレームワークの開発により、DOM要素なしでデータを操作するだけで、開発にMVVMフレームワークを使用し始めています。JQueryの効果はますます少なくなります。多くのプロジェクトは、jqueryライブラリツールクラスを依然として参照しています。これは、jQueryが提供するAjaxを使用してサーバーにデータをリクエストする必要があるためです。プロジェクトにおけるJQueryの役割がAjax Tool Libraryとしてのみ使用される場合、鶏肉を殺し、リソースの無駄を引き起こすようなものだと感じています。現時点では、独自のAjaxライブラリを完全にカプセル化できます。
カプセル化されたajaxが関数を介して使用されると仮定します。
ajax({url: '/getData'、type: 'post'、datAtype: 'json'、data:{id: "123"}})。done(function(){}))インターフェイスAjaxとjQueryの$ .ajaxを呼び出すことの違いを除いて、他のものはまったく同じです。
プロジェクトには、Ajaxを要求する多くの場所がなければなりません。 jQueryを交換すると、$ .ajaxを1つずつ変更することはできません。私たちは何をすべきですか?この時点で、アダプターを追加できます。
var $ = {ajax:function(options){return ajax(options); }}これは、古いコードと新しいインターフェイスと互換性があり、既存のコードの変更を回避します。
要約します
アダプターモードの原理は非常にシンプルです。これは、新しいラッパークラスを追加して、古いコードの呼び出しに適応する新しいインターフェイスをラップし、インターフェイスの変更とコードの呼び出しを避けることです。
適用可能なシナリオ:古いインターフェイスがたくさんあります。古いコードの変更と新しいインターフェイスの交換を避けるために、アプリケーションシナリオは既存の実装方法に影響しません。
1。アダプターモードに適用される機会:
アダプターは、顧客システムが期待するインターフェイスが既存のAPIによって提供されるものと互換性がない状況に適しています。アダプターに適合した2つの方法は、同様のタスクを実行する必要があります。そうしないと、問題は解決されません。ブリッジの要素や外観の要素と同様に、アダプターを作成することにより、実装から抽象化を分離して、2つを個別に変更できます。
2。アダプターモードの利点:
既存のクラスのインターフェイスを新しいインターフェイスで包み、クライアントプログラムが大手術なしでは調整されていないこのクラスを使用できるようにします。
3。オーケストレーターモードの短所:
一部の人々は、アダプターは既存のコードを書き換えることで完全に回避できる不必要なオーバーヘッドであると考えています。さらに、アダプターモードでは、サポートする必要がある新しいツールのバッチも導入されます。既存のAPIがまだ形成されていない場合、または新しいインターフェイスがまだ形成されていない場合、アダプターが常に機能するとは限りません。
その利点は、大規模なシステムとレガシーフレームワークを伴う場合、その欠点よりも際立っている傾向があります。