1. 程式人生 > >java設計模式_橋接模式

java設計模式_橋接模式

橋接模式

1.橋接模式概念:將抽象部分與它的實現分離,使它們可以獨立變化。通俗點講實現系統可能有多種角度分類每一種分類都有可能化,那麼將多角度分離出來讓它們獨立變化,減少它們之間的耦合。

2.橋接模式的結構圖

橋接模式的角色:

  • Implementor,實現類介面。

  • ConcreteImplementor,具體實現類。

  • Abstraction,抽象類。

  • RefinedAbstraction,擴充抽象類。

從圖可以看出橋接模式擁有一個抽象類,以及具體抽象類(多種),以及實現類的介面以及具體實現,實現類介面聚合到抽象類。比喻一下我們可以把抽象類比作手機品牌類,具體手機類有(華為,小米...),實現介面比作手機軟體介面,具體實現由(遊戲,電話聯絡人,音樂..等各個不同軟體),手機軟體可以算手機的一個可變的模組我們把它單獨分離出來它自己變化然後聚合到手機上。這就是橋接模式的做法。。。

3.例項實現

(1)手機品牌類

abstract class MobileBrand {//抽象手機類
    protected MobileSoft mobileSoft;

    public void setMobileSoft(MobileSoft mobileSoft) {//設定軟體
        this.mobileSoft = mobileSoft;
    }
    public abstract  void  run();//執行方法
}

(2)具體手機類

public class HaweiMobile extends MobileBrand {
    @Override
    public void run() {
        mobileSoft.run();
    }
}
public class XiaomiMobile extends  MobileBrand {
    @Override
    public void run() {
        mobileSoft.run();
    }
}

(3)手機軟體介面

public interface MobileSoft {
    public  void run();
}

(4)具體軟體實現

public class CallSoft implements MobileSoft{
    @Override
    public void run() {
        System.out.print("執行通訊軟體");
    }
}
public class GameSoft implements MobileSoft{
    @Override
    public void run() {
        System.out.print("執行手機遊戲");
    }
}

(5)呼叫

public class Test {
    public static void main(String[] args){
        MobileBrand huawei=new HaweiMobile();
        huawei.setMobileSoft(new GameSoft());
        huawei.run();

        MobileBrand xiaomi=new XiaomiMobile();
        xiaomi.setMobileSoft(new CallSoft());
        xiaomi.run();
    }
}
通過例項我們應該能發現橋接模式的原理以及用法。