Java設(shè)計(jì)模式之橋接模式的實(shí)現(xiàn)
橋接模式
橋接模式是將抽象部分與它的實(shí)現(xiàn)部分分離,使他們都可以獨(dú)立地變化。它是一種對象結(jié)構(gòu)型模式,又稱為柄體(Handle and Body)模式或接口(Interface)模式。

上圖一個類被三個類繼承,使我們的程序擴(kuò)展性,可維護(hù)性低,違反了單一職責(zé)原則。

具體代碼實(shí)現(xiàn)如下:
1.創(chuàng)建品牌接口
package com.jialidun.gof.birdge;
//品牌
public interface Brand {
void info();
}
2.創(chuàng)建計(jì)算機(jī)的抽象類
package com.jialidun.gof.birdge;
//抽象的電腦類型類
public abstract class Computer {
//組合,品牌 橋
protected Brand brand;
public Computer(Brand brand){
this.brand = brand;
}
public void info(){
brand.info();//自帶品牌
}
}
3.蘋果品牌
package com.jialidun.gof.birdge;
//蘋果品牌
public class Apple implements Brand{
@Override
public void info() {
System.out.print("蘋果"+"\n");
}
}
4.聯(lián)想品牌
package com.jialidun.gof.birdge;
//聯(lián)想品牌
public class Lenovo implements Brand{
@Override
public void info() {
System.out.print("聯(lián)想"+"\n");
}
}
5.臺式機(jī)
package com.jialidun.gof.birdge;
public class Desktop extends Computer{
public Desktop(Brand brand) {
super(brand);
System.out.print("臺式機(jī)");
}
}
6.筆記本
package com.jialidun.gof.birdge;
public class laptop extends Computer{
public laptop(Brand brand) {
super(brand);
System.out.print("筆記本");
}
}
7.測試
package com.jialidun.gof.birdge;
public class Test {
public static void main(String[] args) {
//蘋果筆記本
Computer computer = new laptop(new Apple());
computer.info();
//聯(lián)想臺式機(jī)
Desktop desktop = new Desktop(new Lenovo());
desktop.info();
}
}

好處分析:
1.橋接模式偶爾類似于多繼承方案,但是多繼承方案違背了類的單一職責(zé)原則, 復(fù)用性比較差,類的個數(shù)也非常多,橋接模式是比多繼承方案更好的解決方法。極大的減少了子類的個數(shù),從而降低管理和維護(hù)的成本
2.橋接模式提高了系統(tǒng)的可擴(kuò)充性,在兩個變化維度中任意擴(kuò)展一個維度,都不需要修改原有系統(tǒng)。符合開閉原則,就像一座橋,可以把兩個變化的維度連接起來
劣勢分析
1.橋接模式的引入會增加系統(tǒng)的理解與設(shè)計(jì)難度,由于聚合關(guān)聯(lián)關(guān)系建立在抽象層,要求開發(fā)者針對抽象進(jìn)行設(shè)計(jì)與編程。
2.橋接模式要求正確識別出系統(tǒng)中兩個獨(dú)立變化的維度,因此其使用范圍具有一定的局限性。
到此這篇關(guān)于Java設(shè)計(jì)模式之橋接模式分析的文章就介紹到這了,更多相關(guān)Java橋接模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
redis實(shí)現(xiàn)分布式鎖實(shí)例詳解
這篇文章主要為大家詳細(xì)介紹了redis實(shí)現(xiàn)分布式鎖實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03
java報(bào)錯:找不到或無法加載主類的解決方法簡單粗暴
本文主要介紹了java報(bào)錯:找不到或無法加載主類的解決方法簡單粗暴,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
java使用hadoop實(shí)現(xiàn)關(guān)聯(lián)商品統(tǒng)計(jì)
本篇文章java使用hadoop實(shí)現(xiàn)關(guān)聯(lián)商品統(tǒng)計(jì),可以實(shí)現(xiàn)商品的關(guān)聯(lián)統(tǒng)計(jì),具有一定的參考價值,感興趣的小伙伴們可以參考一下。2016-10-10

