ブリッジモードを定義します
定義された橋(ブリッジ)モードは以下の通りである:アブストラクト、分離、それらは独立して変えることができるように。それはれる代わりに継承の組み合わせの関係によって達成され、抽象化は、カップリングの二つの可変程度の寸法を小さくするために実装しました。
- 第1の実施形態は、色の様々なバージョンの各形状を提供するように設計されています。
- 第2の設計は、実際のニーズに応じて形状や色の組み合わせです。
以下二つのクラスにシステムを設計するためのプログラムの使用回数、およびより便利なシステム拡張。オプションIIは、ブリッジモードに設計されたアプリケーションです。継承関係にブリッジモード変換関係、それによって、クラスとクラスの間の結合を低減する書かれたコードの量を減少させます。
第二に、ブリッジモードの長所と短所
(ブリッジ)モードをブリッジする利点は次のとおりです。
- 抽象化と実現、拡張機能の分離からです。
- その実装は、クライアントに対して透過的詳細について説明します。
不利な点は以下のとおりです。
抽象化レイヤーの上に構築された集約関係として、それはシステムの設計を理解することの難しさを増す抽象化のための設計およびプログラミングの開発者が必要です。
第三に、ブリッジモードを達成するために
私たちは、別のセクションの実現の抽象一部、両者の間の継承関係をキャンセル関係を組み合わせて使用することができます。
橋(ブリッジ)モードは、次の主要な役割で構成されています。
- 抽象(抽象)の役割:抽象クラスの定義とオブジェクトの実現への参照が含まれています。
- 抽象(洗練された抽象化)の役割を拡張:抽象化の役割は役割を呼び出すビジネス関係を達成するために、親クラスのビジネスメソッドを実装し、方法を組み合わせて、サブクラスです。
- (実装側)の役割の実現:拡張抽象ロールコールのためのインターフェースの実現の役割を定義します。
- (コンクリート実装側)の具体的な実現は、役割:インタフェースの特定の実装の役割を与えられた達成するために。
図に示される構造:
次のようにその実装は次のようになります。
パブリック クラスBridgeTest { 公共 静的 ボイドメイン(文字列[]引数) { 実装者がインプリ = 新しい新しいConcreteImplementorA(); 抽象ABS = 新しい新しいRefinedAbstraction(インプリ); abs.Operation(); } }
// の役割達成 インタフェースを実装者 { 公共 ボイドOperationImpl(); }
// 文字の特定の実装 クラス ConcreteImplementorA 実装実装者 { 公共 ボイド OperationImpl() { System.out.println(「(コンクリート実装者の具体的な実現)役割が訪れている」); } }
// 抽象文字 抽象 クラス抽象 { 保護実装者インプリ; 保護された抽象化(実装者インプリ) { この .imple = インプリ; } パブリック 抽象 ボイド動作(); }
// 拡張抽象文字 クラス RefinedAbstraction 延び抽象 { 保護RefinedAbstraction(実装者インプリ) { スーパー(インプリ)を、 } 公共 無効操作() { System.out.printlnは( "拡張アブストラクト(洗練された抽象化)役割が訪れている" ); imple.OperationImpl(); } }
応用例IVブリッジモード
抽象ブリッジモードが場所についての分析のためのパッケージの他の例として、上述のため:多くの女性のバッグがあり、皮質で除算し、目的に応じて分割することができ、ブランド、色によって、サイズ分類によって、複数存在します任意の寸法のばらつき、したがって適切な女性のハンドバッグを達成するために、ブリッジモードの使用。
代替的に(黄色)黄色、及び赤色(レッド)によって、必要に応じてウォレット(財布)とバッグ(ハンドバッグ)本実施例ゾーニングによって。カラーは2次元でのクラスやバッグのように定義することができます。
クラスカラー(色)は、2つのロールの特定の実装有する定義された文字、を実現するための寸法である:黄色と赤、色GETCOLOR()メソッドによって選択することができ、バッグ(袋)は、抽象として定義され、別の寸法でありますバッグと財布、のgetName()メソッドによって選択され、関連するカラーバッグ財布ことができる色のクラスオブジェクトを含む:の役割は、2つの拡張の抽象役割を有しています。
パブリック クラスBagManage { 公共 静的 ボイドメイン(文字列[]引数) { バッグバッグ = 新しい新しいハンドバッグ(); bag.setColor(新しい新しいイエロー()); のSystem.out.println(bag.getName()); } } // 実現の役割:色 インターフェイスカラー { ストリングGETCOLOR(); } // 役割の特定の実装:黄色 クラス黄色実装の色 { パブリック文字列GETCOLOR() { リターン「黄」; } } // キャストの特定の実装:赤 クラスレッド実装カラー { パブリック文字列GETCOLOR() { リターン「赤」; } } // 抽象化の役割:パケット 抽象 クラスバッグ { 保護色カラー; 公共 ボイドsetColorを(色カラー) { この .color = カラー; } パブリック 抽象文字列のgetName(); } // 拡張抽象文字:バッグ クラスハンドバッグ延びバッグ { 公共関連項目GetName文字列() { リターン color.getColor()+ "ハンドバッグ" ; } } // 拡張抽象文字:財布の クラスウォレット延びバッグ { パブリック文字列のgetName() { リターン color.getColor()+ "財布" ; } }
出力は次のようになります。
yellowHandBag
アプリケーションシーンファイブ、ブリッジモード
ブリッジモードでは、通常のシーンで使用されています。
- そこに二つの独立した次元クラスの変更があり、これら2次元の拡張が必要なとき。
- ときにシステムは、システムクラスの数の急激な増加につながったマルチレベルの継承として、相続またはを使用する必要はありません。
- このシステムは、抽象と具象的な役割の役割部材との間に、より多くの柔軟性を追加する必要がある場合。
拡張六、ブリッジモードモード
ソフトウェア開発では、時々橋渡し(ブリッジ)モードは、アダプタモードと組み合わせて使用することができます。インターフェースは、ブリッジ(ブリッジ)モードのインタフェースの役割の既存のクラスの実装と矛盾する場合に示された特定の構造に示されるように、両方が、両方の中間の定義でアダプタに接続します。