23種設計模式——橋接模式
阿新 • • 發佈:2020-07-16
23種設計模式——橋接模式
橋接模式
- 將抽象部分與它的實現部分分離,使他們都可以獨立地變化。是一種物件結構模式
- 下面第一張圖是我們經常看到的,要是用程式碼實現的話要分成很多很多的類,這顯然不是我們想要的,違反了單一職責原則;橋接模式就是來解決這種問題,演變成了第二張圖,通過連線點連線起來,但又不相互干擾。
package com.mjh.bridge; public interface Brand { public void info(); } //聯想品牌 class Lenovo implements Brand { @Override public void info() { System.out.print("聯想"); } } //蘋果品牌 class Apple implements Brand{ @Override public void info() { System.out.print("蘋果"); } }
package com.mjh.bridge; public abstract class Computer { //組合 橋(連線點) protected Brand brand; public Computer(Brand brand) { this.brand = brand; } public void info(){ brand.info();//自帶品牌 } } class DeskTop extends Computer{ public DeskTop(Brand brand) { super(brand); } @Override public void info() { super.info(); System.out.println("桌上型電腦"); } } class LapTop extends Computer { public LapTop(Brand brand) { super(brand); } @Override public void info() { super.info(); System.out.println("筆記本"); } }
package com.mjh.bridge;
public class Test {
public static void main(String[] args) {
//蘋果筆記本
Computer computer = new LapTop(new Apple());
computer.info();
//聯想桌上型電腦
Computer computer1=new DeskTop(new Lenovo());
computer1.info();
}
}
優點
- 橋接模式偶爾類似於多繼承,但是多繼承方案違背了類的單一職責原則,複用性比較差,類的個數也比較多,橋接模式是比多繼承方案更好的解決方法,極大地減少了子類個數,從而降低管理和維護成本
- 橋接模式提高了子系統的可擴充套件性,在兩個變化維度中任意擴充套件一個維度,都不需要修改原有系統。符合開閉原則,就像一座橋,可以把兩個變化的維度連線起來
缺點
- 增加系統的立即與設計難度,由於聚合關聯建立在抽象層,要求開發者針對抽象進行設計與程式設計
- 要求正確失敗系統中兩個以上獨立變化的維度,因此使用範圍有一定侷限性