中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
橋接模式——開關(guān)和電燈照明

一模式定義

橋接模式,也稱橋梁模式,在軟件系統(tǒng)中,由于自身的邏輯,具有兩個或多個維度的變化,如何應(yīng)對這種多維度的變化,橋接模式使得軟件系統(tǒng)能夠輕松地沿著多個方向進(jìn)行變化,而又不引入額外的復(fù)雜度。

橋接模式三個關(guān)鍵詞為:抽象化,實現(xiàn)化,脫耦

 

二模式舉例

1 橋接模式分析方法

我們借用電燈照明來說明該模式。

不使用繼承,使用對象組合的方式,將開關(guān)和電燈的強關(guān)聯(lián)關(guān)系變成弱關(guān)聯(lián)關(guān)系。

2橋接模式靜態(tài)類模型



 

3代碼示例

3.1創(chuàng)建電燈接口

Java代碼  
  1. package com.demo.bridge.lights;  
  2.   
  3. /** 
  4.  * 電燈接口 
  5.  *  
  6.  * @author 
  7.  *  
  8.  */  
  9. public interface ILight  
  10. {  
  11.     // 接通電流  
  12.     public void electricConnected();  
  13.   
  14.     // 照明  
  15.     public void light();  
  16.   
  17.     // 電流關(guān)閉  
  18.     public void electricClosed();  
  19.   
  20. }  

 3.2創(chuàng)建一般開關(guān)

Java代碼  
  1. package com.demo.bridge.switchs;  
  2.   
  3. import com.demo.bridge.lights.ILight;  
  4.   
  5. /** 
  6.  * 開關(guān)頂層類 
  7.  *  
  8.  * @author 
  9.  *  
  10.  */  
  11. public class BaseSwitch {  
  12.     // 使用組合 設(shè)置ILight為內(nèi)部私有屬性 此為橋梁  
  13.     protected ILight light;  
  14.   
  15.     // 構(gòu)造方法將 外部的light類型注入進(jìn)來  
  16.     public BaseSwitch(ILight light) {  
  17.         this.light = light;  
  18.     }  
  19.   
  20.     /** 
  21.      * 開燈方法 
  22.      */  
  23.     public final void makeLight() {  
  24.         // 打開開關(guān) 接通電流  
  25.         this.light.electricConnected();  
  26.         // 照明  
  27.         this.light.light();  
  28.         // 關(guān)閉開關(guān) 關(guān)閉電流  
  29.         this.light.electricClosed();  
  30.     }  
  31. }  

 3.3創(chuàng)建遙控開關(guān)

Java代碼  
  1. package com.demo.bridge.switchs.sub;  
  2.   
  3. import com.demo.bridge.lights.ILight;  
  4. import com.demo.bridge.switchs.BaseSwitch;  
  5.   
  6. /** 
  7.  * 遙控開關(guān) 繼承BaseSwitch 擴展功能 
  8.  *  
  9.  * @author 
  10.  *  
  11.  */  
  12. public class RemoteControlSwitch extends BaseSwitch  
  13. {  
  14.     // 構(gòu)造方法  
  15.     public RemoteControlSwitch(ILight light)  
  16.     {  
  17.         super(light);  
  18.     }  
  19.   
  20.     /** 
  21.      * 使用遙控開關(guān)控制開燈 
  22.      *  
  23.      * @param operColor 
  24.      *            燈顏色 
  25.      */  
  26.     public final void makeRemoteLight(int operColor)  
  27.     {  
  28.         // 打開開關(guān) 接通電流  
  29.         this.light.electricConnected();  
  30.         // 照明  
  31.         this.light.light();  
  32.         String color = "";  
  33.         switch (operColor)  
  34.         {  
  35.             case 1:  
  36.                 color = "暖色";  
  37.                 break;  
  38.             case 2:  
  39.                 color = "藍(lán)色";  
  40.                 break;  
  41.             case 3:  
  42.                 color = "紅色";  
  43.                 break;  
  44.             default:  
  45.                 color = "白色";  
  46.                 break;  
  47.         }  
  48.         System.out.println(" ...現(xiàn)在是" + color + "!");  
  49.   
  50.         // 關(guān)閉開關(guān) 關(guān)閉電流  
  51.         this.light.electricClosed();  
  52.     }  
  53. }  

 3.4白熾燈實現(xiàn)

Java代碼  
  1. package com.demo.bridge.lights.impl;  
  2.   
  3. import com.demo.bridge.lights.ILight;  
  4.   
  5. /** 
  6.  * 白熾燈 實現(xiàn) 
  7.  *  
  8.  * @author 
  9.  *  
  10.  */  
  11. public class IncandescentLight implements ILight  
  12. {  
  13.     // 電流關(guān)閉  
  14.     public void electricClosed()  
  15.     {  
  16.         System.out.println("白熾燈被關(guān)閉了...");  
  17.   
  18.     }  
  19.   
  20.     // 接通電流  
  21.     public void electricConnected()  
  22.     {  
  23.         System.out.println("白熾燈被打開了...");  
  24.     }  
  25.   
  26.     // 照明  
  27.     public void light()  
  28.     {  
  29.         System.out.println("白熾燈照明!");  
  30.   
  31.     }  
  32.   
  33. }  

 3.5水晶燈實現(xiàn)

Java代碼  
  1. package com.demo.bridge.lights.impl;  
  2.   
  3. import com.demo.bridge.lights.ILight;  
  4.   
  5. /** 
  6.  * 水晶燈 實現(xiàn) 
  7.  *  
  8.  * @author 
  9.  *  
  10.  */  
  11. public class CrystalLight implements ILight  
  12. {  
  13.     // 電流關(guān)閉  
  14.     public void electricClosed()  
  15.     {  
  16.         System.out.println("水晶燈被關(guān)閉了...");  
  17.   
  18.     }  
  19.   
  20.     // 接通電流  
  21.     public void electricConnected()  
  22.     {  
  23.         System.out.println("水晶燈被打開了...");  
  24.   
  25.     }  
  26.   
  27.     // 照明  
  28.     public void light()  
  29.     {  
  30.         System.out.println("水晶燈照明!");  
  31.   
  32.     }  
  33.   
  34. }  

 3.6一般開關(guān)控制白熾燈,遙控開關(guān)控制水晶燈

Java代碼  
  1. package com.demo;  
  2.   
  3. import com.demo.bridge.lights.ILight;  
  4. import com.demo.bridge.lights.impl.CrystalLight;  
  5. import com.demo.bridge.lights.impl.IncandescentLight;  
  6. import com.demo.bridge.switchs.BaseSwitch;  
  7. import com.demo.bridge.switchs.sub.RemoteControlSwitch;  
  8.   
  9. /** 
  10.  * 客戶端應(yīng)用程序 
  11.  *  
  12.  * @author 
  13.  *  
  14.  */  
  15. public class ClientForBridge {  
  16.   
  17.     /** 
  18.      * @param args 
  19.      */  
  20.     public static void main(String[] args) {  
  21.         // 白熾燈 實例  
  22.         ILight incandescentLight = new IncandescentLight();  
  23.         // 水晶燈 實例  
  24.         ILight crystalLight = new CrystalLight();  
  25.   
  26.         // 一般開關(guān)  
  27.         System.out.println("-- 一般開關(guān) -- ");  
  28.         BaseSwitch switch1 = new BaseSwitch(incandescentLight);  
  29.         switch1.makeLight();  
  30.         System.out.println("\n-- 遙控開關(guān) -- ");  
  31.         // 遙控開關(guān)  
  32.         RemoteControlSwitch remoteControlSwitch = new RemoteControlSwitch(  
  33.                 crystalLight);  
  34.         remoteControlSwitch.makeRemoteLight(1);  
  35.     }  
  36. }  

 運行結(jié)果:

-- 一般開關(guān) -- 

白熾燈被打開了...

白熾燈照明!

白熾燈被關(guān)閉了...

 

-- 遙控開關(guān) -- 

水晶燈被打開了...

水晶燈照明!

 ...現(xiàn)在是暖色!

水晶燈被關(guān)閉了...

3.7一般開關(guān)控制水晶燈,遙控開關(guān)控制白熾燈

Java代碼  
  1. package com.demo;  
  2.   
  3. import com.demo.bridge.lights.ILight;  
  4. import com.demo.bridge.lights.impl.CrystalLight;  
  5. import com.demo.bridge.lights.impl.IncandescentLight;  
  6. import com.demo.bridge.switchs.BaseSwitch;  
  7. import com.demo.bridge.switchs.sub.RemoteControlSwitch;  
  8.   
  9. /** 
  10.  * 客戶端應(yīng)用程序 
  11.  *  
  12.  * @author 
  13.  *  
  14.  */  
  15. public class ClientForBridge {  
  16.   
  17.     /** 
  18.      * @param args 
  19.      */  
  20.     public static void main(String[] args) {  
  21.         // 白熾燈 實例  
  22.         ILight incandescentLight = new IncandescentLight();  
  23.         // 水晶燈 實例  
  24.         ILight crystalLight = new CrystalLight();  
  25.   
  26.         // 一般開關(guān)  
  27.         System.out.println("-- 一般開關(guān) -- ");  
  28.         BaseSwitch switch1 = new BaseSwitch(crystalLight);  
  29.         switch1.makeLight();  
  30.         System.out.println("\n-- 遙控開關(guān) -- ");  
  31.         // 遙控開關(guān)  
  32.         RemoteControlSwitch remoteControlSwitch = new RemoteControlSwitch(  
  33.                 incandescentLight);  
  34.         remoteControlSwitch.makeRemoteLight(1);  
  35.     }  
  36. }  

 運行結(jié)果

-- 一般開關(guān) -- 

水晶燈被打開了...

水晶燈照明!

水晶燈被關(guān)閉了...

 

-- 遙控開關(guān) -- 

白熾燈被打開了...

白熾燈照明!

 ...現(xiàn)在是暖色!

白熾燈被關(guān)閉了...

 

三設(shè)計原則

1 盡量使用對象聚合弱關(guān)聯(lián),避免使用繼承強關(guān)聯(lián)。

2 抽象化和實現(xiàn)化脫耦。

 

四使用場合

1不希望在抽象類和實現(xiàn)部分之間有一個固定的綁定關(guān)系

2類的抽象及實現(xiàn)部分都應(yīng)該可以通過孑類的方法加以擴充

3對一個抽象的實現(xiàn)部分的修改對客戶不產(chǎn)生影響,即客戶代碼不必重新編譯

五橋接模式靜態(tài)類圖



 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
新房開關(guān)插座不這樣布置,入住后鐵定想砸墻,別說我沒提醒你!
拆一個兩路的遙控開關(guān)
還是燈上接個遙控開關(guān)好,原來的開關(guān)還能用,遙控器也可以用
買了一個遙控開關(guān)來代替雙控開關(guān),不用再布線了,簡單省事
智能開關(guān)的接法
LED light show at Bay Bridge San Francisco 照明
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服