结构型模式:桥接模式
橋接模式即將抽象部分與它的實現部分分離開來,使他們都可以獨立變化。
??????橋接模式將繼承關系轉化成關聯關系(一個維度持有另一個維度的引用),它降低了類與類之間的耦合度,減少了系統中類的數量,也減少了代碼量。
實現系統可能有多個角度分類,每一種角度都可能變化,
那么把這種多角度分類給分離出來讓他們獨立變化,減少他們之間耦合。
??????橋接模式中的所謂脫耦,就是指在一個軟件系統的抽象化和實現化之間使用關聯關系(組合或者聚合關系)而不是繼承關系,從而使兩者可以相對獨立地變化,這就是橋接模式的用意。
??????模式場景我們就采用哪個畫圖的。其UML結構圖如下
package bridge;
/**
?* 品牌
?*/
public interface Brand {
????void sale();
}
package bridge;
public class AppleBrand implements Brand {
????@Override
????public void sale() {
????????System.out.print("蘋果品牌");
????}
}
package bridge;
public class ASUSBrand implements Brand {
????@Override
????public void sale() {
????????System.out.print("華碩品牌");
????}
}
package bridge;
public class DellBrand implements Brand {
????@Override
????public void sale() {
????????System.out.print("戴爾品牌");
????}
}
package bridge;
public class Computer {
????private Brand brand;
????public Computer(Brand brand) {
????????this.brand = brand;
????}
????public void sale() {
????????brand.sale();
????}
}
package bridge;
public class BookComputer extends Computer {
????public BookComputer(Brand brand) {
????????super(brand);
????}
????@Override
????public void sale() {
????????super.sale();
????????System.out.println("筆記本在銷售");
????}
}
package bridge;
public class DeskComputer extends Computer {
????public DeskComputer(Brand brand) {
????????super(brand);
????}
????@Override
????public void sale() {
????????super.sale();
????????System.out.println("臺式機在銷售");
????}
}
package bridge;
public class Test {
????public static void main(String[] args) {
????????Computer AsusDeskComputer = new DeskComputer(new ASUSBrand());
????????AsusDeskComputer.sale();
????????Computer DellBookComputer = new BookComputer(new DellBrand());
????????DellBookComputer.sale();
????}
}
?
結果:
華碩品牌臺式機在銷售
戴爾品牌筆記本在銷售
橋接模式總結:
橋接模式使用場景:?
?
?
?
總結
以上是生活随笔為你收集整理的结构型模式:桥接模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 结构型模式:外观模式(门面模式)
- 下一篇: 框架:Mybatis开发规范及输入输出映