今天來總結設計模式:橋接模式
一、引言
橋接模式是什麼?爲什麼出現橋接模式?橋接模式怎麼實現?
- 橋接模式可以理解爲把程序中抽象和實現分開,中間通過一座橋進行聯繫,其他地方互不干擾
- 爲什麼出現橋接模式?可以看以下類圖
類圖中一共有3個接口,小米品牌,華爲品牌繼承於手機接口。小米和華爲各有3種種類的手機。
假如我們現在要增加蘋果品牌的手機,是不是應該做成如下圖:
很明顯,手機品牌(小米,華爲,蘋果)和手機樣式(全面屏,摺疊屏,翻蓋)耦合在一起了,不利於我們程序的擴展。由此引出橋接模式。
二、橋接模式的實現
橋接模式的實現很簡單,直接上類圖:
很明顯,相信大家已經看到橋了,沒錯,就是中間橫線,聚合的那條橋。左邊是具體的實現類,右邊是抽象的手機品牌,把實現和抽象分離開,正是橋接模式的思想。
下面給大家實現一波代碼:
/**
* 品牌接口
*/
public interface Brand {
}
/**品牌實現類
* 小米
*/
public class XiaoMi implements Brand {
}
/**
* 華爲
*/
class HuaWei implements Brand{
}
/*
蘋果
*/
class Iphone implements Brand{
}
以上是橋的右邊也就是抽象部分
接下來展示橋的左邊,實現部分
/**
* 手機
*/
public abstract class Phone {
private Brand brand;//聚合品牌,相當於橋
//構造方法
public Phone(Brand brand){
this.brand=brand;
}
}
//-------------------------實現類-----------------------------
/**
* 全面屏
*/
public class QuanMianPing extends Phone{
public QuanMianPing(Brand brand) {
super(brand);
}
}
/**
* 摺疊屏
*/
class ZheDiePing extends Phone{
public ZheDiePing(Brand brand) {
super(brand);
}
}
class FanGai extends Phone{
public FanGai(Brand brand) {
super(brand);
}
}
//Min方法如下
可以看出,每種手機樣式(全面屏,摺疊屏,翻蓋)都聚合了一個品牌對象,因此,現在如果要增加一種樣式或者手機品牌,只需要在橋的左邊,或者右邊添加類即可。實現樣式(實現)和品牌(抽象)分開。
三、結束
以上就是橋接模式的全部內容了,覺得寫得還算通俗易懂的各位朋友動動小手點贊,謝謝大家。
本文部分知識點來自於b站韓平順老師的23種設計模式(點這裏)