ブリッジパターンは、抽象的な部分を実装部分から分離するため、両方を独立して変更し、一緒に調和して作業できるようにします。抽象的な部分と実装部分の両方を、互いに影響を与えることなく独立して変更でき、コードの結合を減らし、コードのスケーラビリティを改善できます。
GOFの定義によれば、ブリッジモードの役割は、「抽象化を実装から分離して、2つが独立して変更できるようにする」ことです。このパターンは、JavaScriptで一般的なイベント駆動型プログラミングにとって大きな利点です。
ブリッジモードの最も一般的で実用的なアプリケーションの1つは、イベントリスナーコールバック関数です。例:イベントリスナーは、イベントに加えられたステートメントをコールバック関数にカプセル化し、実装ではなくインターフェイスを介してプログラムします。
基本理論
ブリッジパターンの定義:実装部品をすべて独立して変更できるように、抽象パーツを実装部品と分離します。
ブリッジモードは、主に4つの役割で構成されています。
(1)要約クラス
(2)抽象クラスを展開します
(3)クラスインターフェイスを実装します
(4)特定の実装クラス
JavaScript言語の特性によれば、2つの役割に簡素化します。
(1)抽象クラスを展開します
(2)特定の実装クラス
ブリッジモードを理解する方法は?次に例を挙げましょう
ブリッジモードの実装
ブリッジパターンのアイデアを理解するための鍵は、抽象的な部分を分離して部分を実現するというアイデアを理解することです。説明する例を示しましょう
最も簡単なブリッジモード
実際、私たちが最も頻繁に使用する各関数は、典型的なブリッジモードです。次のようにシミュレートします。
var ride = function(arr、fn){for(var i = 0; i <arr.length; i ++){var val = arr [i]; if(fn.call(val、i、val、arr)){return false; }}} var arr = [1、2、3、4];それぞれ(arr、function(i、v){arr [i] = v * 2;})この例では、各関数を介してarr配列をループします。この例は非常に一般的ですが、典型的なブリッジパターンが含まれています。
この例では、抽象的な部分は各関数であり、上記の拡張された抽象クラスであり、実装部分はFN、つまり具体的な実装クラスです。要約部分と実装部分は独立して変更できます。この例は簡単ですが、ブリッジモードの典型的なアプリケーションです。
プラグイン開発のブリッジモード
ブリッジモードに適したシナリオの1つは、コンポーネント開発です。さまざまな機会に適応するために、コンポーネントはさまざまな次元に多くの変化があります。ここでは、ブリッジモードを適用して、その抽象化を実装から分離し、コンポーネントをより拡張可能にします。
ポップアッププラグインを開発したいとします。これには、ポップアップの種類が異なります。通常のメッセージリマインダー、エラーリマインダー、各リマインダーの表示方法が異なります。これは、典型的な多次元の変更シナリオです。最初に、通常のメッセージポップアップウィンドウとエラーメッセージポップアップウィンドウの2つのクラスを定義します。
function mesagedialog(animation){this.animation = animation;} mesagedialog.prototype.show = function(){this.animation.show();} function ererordialog(animation = ainimation = animation;} errordialog.protototy.show = functions(){this.animation.show();これらの2つのクラスは、上記の抽象的な部分、つまり拡張された抽象クラスであり、どちらもメンバーアニメーションを含みます。
2つのポップアップウィンドウはショーメソッドを通じて表示されますが、アニメーション効果は異なります。次の2つのディスプレイ効果クラスを定義します。
function lineranimation(} lineranimation.prototype.show = function(){console.log( "its liner");} function esaeanimation(){} easeanimation.prototype.show = function(){console.log( "it aease");};}これらの2つのクラスは、特定の表示効果を実現する特定の実装クラスです。それで、私たちはそれをどのように呼びますか?
var message = new mesagedialog(new lineranimation()); message.show(); var error = new errordialog(new EaseAnimation()); error.show();
アニメーション効果を追加したい場合は、別のエフェクトクラスを定義して渡すことができます。
要約します
ブリッジモデルを学習するための鍵は、抽象的な部分と実装部分の分離を理解することです。そうすれば、2つはフォームに取りつかれずに独立して変更できます。 JSプラグインには柔軟な変更があり、該当するシナリオの多様性は、このモデルを使用して達成するのに非常に適しています。ブリッジモードを使用することで最も重要なことは、システムの変化のさまざまな寸法を見つけることです。
(1)ブリッジモードの利点:
実装から抽象化を分離すると、ソフトウェアのさまざまなコンポーネントを独立して管理することができます。
(2)ブリッジモードの欠点:
各ブリッジ要素は、アプリケーションのパフォーマンスにマイナスの影響を与える関数呼び出しを追加するために使用されます。システムの複雑さを高めます。ブリッジ関数が2つの機能を接続するために使用され、機能の1つがブリッジ関数の外側ではまったく呼び出されない場合、現時点ではブリッジ関数は必要ありません。
ブリッジモードは、「実装から抽象化を分離して、2つが独立して変化するようにします。」コードのモジュール性を促進し、よりクリーンな実装につながり、抽象的な柔軟性を向上させることができます。一連のクラスと機能を接続するために使用でき、特権的な機能を使用してプライベートデータにアクセスする手段を提供します。