什么是橋接模式?
橋接模式就是把事物的兩個方面(兩個變化的維度)分開管理,讓它們可以分別自由變化,然后通過一個“橋”把它們連接起來。
舉個生活中的例子
想象一下你在買鞋子:
- 鞋子有不同的款式(比如運動鞋、皮鞋、涼鞋)
- 鞋子有不同的顏色(比如黑色、白色、紅色)
如果你每一種款式都做每一種顏色,會有很多種組合,比如:
- 黑色運動鞋
- 白色運動鞋
- 黑色皮鞋
- 紅色涼鞋
- ……
這樣鞋子的種類就會變得特別多,管理起來很麻煩。
橋接模式的做法是:
- 把“款式”和“顏色”分開,分別設計
- 生產鞋子的時候,把某種款式和某種顏色組合起來
這樣,不管以后增加新的款式還是顏色,都不會影響另一邊,也不會導致組合數量爆炸。
用程序舉例
比如你要發消息,有兩種維度:
- 消息類型:普通消息、加急消息
- 發送方式:短信、郵件
如果不用橋接模式,你可能會寫很多類:
普通短信、普通郵件、加急短信、加急郵件……
用橋接模式,你只需要:
- 把消息類型和發送方式分開
- 需要的時候組合在一起
代碼會變成這樣(偽代碼):
// 發送方式接口
interface Sender {void send(String msg);
}// 兩種發送方式
class SmsSender implements Sender { ... }
class EmailSender implements Sender { ... }// 消息類型抽象
abstract class Message {protected Sender sender;public Message(Sender sender) { this.sender = sender; }public abstract void send(String msg);
}// 兩種消息類型
class NormalMessage extends Message { ... }
class UrgentMessage extends Message { ... }
這樣你可以任意組合:
- 普通消息用短信發
- 加急消息用郵件發
- 普通消息用郵件發……
總結一句話
橋接模式就是把“事物的兩個變化點”分開,分別設計,然后通過橋(組合)連接起來,方便自由擴展和組合,避免重復和類爆炸。