この記事では、ブリッジモードを使用してスイッチとライト照明機能を実装することについて説明します。次のように、参照のために共有してください。
1。パターン定義
ブリッジモード、ブリッジモードとも呼ばれるソフトウェアシステムでは、独自のロジックにより、変更には2つ以上の次元があります。このような多次元の変更に対処する方法ブリッジモードにより、ソフトウェアシステムは、追加の複雑さを導入せずに複数の方向に簡単に変更できます。
ブリッジモードの3つのキーワードは、抽象化、実装、デカップリングです。
2。モデルの例
1。ブリッジングモード分析方法
このモードを説明するために、照明照明を借ります。
継承なしでは、オブジェクトの組み合わせ方法を使用して、スイッチとライトの強い関係を弱い関係に変えます。
2ブリッジモード静的クラスモデル
3つのコードの例
3.1電灯インターフェイスを作成します
パッケージcom.demo.bridge.lights;/** * light interface * * @author * */public interface ilight {//現在のpublic void ElectricConnected(); // public void light(); // public off public void electricclosed();}3.2一般的なスイッチを作成します
パッケージcom.demo.bridge.switchs;インポートcom.demo.bridge.lights.ilight;/** * Switchトップレベルクラス * * @author * */public class baseswitch {//組み合わせを使用して内部私有財産に設定します。 //メソッドの構築外部光タイプをパブリックベーススイッチ(ilight light)に注入{this.light = light; } / *** light on method* / public final void makelight(){//スイッチをオンにして現在のthis.light.ElectricConnected(); // this.light.light(); //スイッチをオフにして、現在のthis.light.ElectricClosed()をオフにします。 }}3.3リモートスイッチを作成します
パッケージcom.demo.bridge.switchs.sub; Import com.demo.bridge.lights.ilight; Import com.demo.bridge.switchs.basswitch;/** *リモコンスイッチはベーススイッチ拡張機能を継承します * * */パブリッククラスレモコントロールスワッチ拡張{//construment public remotecontrolwitchスーパー(ライト); } / ***リモートコントロールスイッチを使用して** @param operatorColor*ライトカラー* /パブリックファイナルボイドmakeremotelight(int operacolor){//スイッチをオンにして現在のlight.ElectricConneconed(); // this.light.light();文字列color = ""; switch(opercolor){ケース1:color = "暖かい色";壊す;ケース2:color = "blue";壊す;ケース3:color = "red";壊す;デフォルト:color = "white";壊す; } system.out.println( "... now is" + color + "!"); // Switchを閉じて電流をオフにしますthis.light.ElectricClosed(); }}3.4白熱灯の実装
パッケージcom.demo.bridge.lights.impl; Import com.demo.bridge.lights.ilight;/** * Incandescent Lamp実装 * * @author * */public class incandescentlight exprments ilight {// current off off public void electricclosed(){system.out.println( "Incandecentランプ( } //現在のpublic void electricConnected(){system.out.println( "Incandescentランプがオンになります..."); } //照明public void light(){system.out.println( "Incandescent Lighting!"); }}3.5クリスタルランプの実装
パッケージcom.demo.bridge.lights.impl; Import com.demo.bridge.lights.ilight;/** * Crystallight実装 * @author * * */public class crystallight ilight {//現在のvoid electricclosed(){system.out.println( "crystallight off ..."); } //現在のpublic void electricConnected(){system.out.println( "Crystallightがオンになりました..."); } //照明public void light(){System.out.println( "Crystal Lamp Lighting!"); }}3.6一般的なスイッチ制御白熱灯、リモートスイッチ制御クリスタルランプ
パッケージcom.demo; import com.demo.bridge.lights.ilight; Import com.demo.bridge.light.impl.crystallight; import com.demo.bridge.lights.impl.incandescentlight; Import com.demo.bridge.switchs.basewitch; @author * */public class clientforbridge {/** * @param args */public static void main(string [] args){// incandescentlight instance ilight ncandescentlight = new nucandescentlight(); //クリスタルランプインスタンスilight crystallight = new Crystallight(); //一般的なスイッチSystem.out.println( " - general switch--"); baseswitch switch1 = new Baseswitch(incandescentlight); switch1.makelight(); system.out.println( "/n - リモートコントロールスイッチ - "); //リモートコントロールスイッチRemoteControlswitch = new RemoteControlswitch(Crystallight); Remotecontrolswitch.MakerEmotelight(1); }}実行結果:
- 一般的なスイッチ -
白熱灯が点灯しました...
白熱灯照明!
白熱灯がオフになった...
- リモートコントロールスイッチ -
クリスタルランプがオンになりました...
クリスタルランプ照明!
...今は暖かいです!
クリスタルランプがオフになった...
3.7一般的なスイッチ制御クリスタルランプ、リモートコントロールスイッチ制御白熱灯
パッケージcom.demo; import com.demo.bridge.lights.ilight; Import com.demo.bridge.light.impl.crystallight; import com.demo.bridge.lights.impl.incandescentlight; Import com.demo.bridge.switchs.basewitch; @author * */public class clientforbridge {/** * @param args */public static void main(string [] args){// incandescentlightの例ilight incandescentlight = new nucandscentlight(); //クリスタルランプの例ilight crystallight = new Crystallight(); //一般的なスイッチSystem.out.println( " - general switch--"); baseswitch switch1 = new Baseswitch(Crystallight); switch1.makelight(); system.out.println( "/n - リモートコントロールスイッチ - "); //リモートコントロールスイッチRemoteControlswitch = new RemoteControlswitch(incandescentlight); Remotecontrolswitch.MakerEmotelight(1); }}実行結果
- 一般的なスイッチ -
クリスタルランプがオンになりました...
クリスタルランプ照明!
クリスタルランプがオフになった...
- リモートコントロールスイッチ -
白熱灯が点灯しました...
白熱灯照明!
...今は暖かいです!
白熱灯がオフになった...
3。設計原則
1弱い関連性のオブジェクト集約を使用し、強力な継承関連を使用しないようにしてください。
2抽象化と実装の分離。
4.機会を使用します
1抽象クラスと実装部分の間に固定されたバインディング関係を望まない
2つのクラスの抽象化と実装部分は、サイレンシングの方法を通じて拡張する必要があります。
3抽象実装パーツの変更は、クライアントに影響しません。つまり、クライアントコードを再コンパイルする必要はありません。
5。ブリッジモード静的クラス図
Javaアルゴリズムの詳細については、このサイトに興味のある読者は、「Javaデータ構造とアルゴリズムのチュートリアル」、「Java操作DOMノードのヒントの要約」、「Javaファイルの要約およびディレクトリ操作のヒント」、「Java Cache操作のヒントの要約」というトピックを見ることができます。
この記事がみんなのJavaプログラミングに役立つことを願っています。