1. 程式人生 > >設計模式(9)Bridge橋梁設計模式

設計模式(9)Bridge橋梁設計模式

資料 fin 模式 open 模板 stat 負責 實現 close

一.什麽是Bridge模式

負責兩兩個層次結構的東西連接起來,分別是類的功能層次結構和類的實現層次結構.

二.解析

1.類的功能層次結構是通過子類繼承父類添加新的功能函數.

2.類的實現層次結構是通過父類定義抽象類,具體實現交給子類;父類負責定義對接的接口,子類負責實現接口.

3.父類Display負責實現基本函數,而函數裏面其實是調用抽象方法類的函數,如:

public Display(DisplayImpl impl){

  this.impl = impl;

}

public void open(){

  impl.rawOpen()(

}

並且父類Display還負責類似的定義模板方法,說的類似,畢竟方法還是自己的,但是方法的裏面卻套著別人的方法,不過也可以包含自己的,如

public final void display(){

  open();

  print();

  close();

}

哈哈,想想說模板還是不怎麽準確的,只能說某種情況下.

4.子類CountDisplay負責增加功能,繼承後寫功能就是,比較簡單就不啰嗦.

5.實現層次的父類DisplayImpl,跟子類StringDisplayImpl的功能是一個抽象方法類,一個實現方法類.

而之前的Display類的方法就是包含StringDisplayImpl的實現方法

三.代碼解析

Main程序

public class Main(){

  public static void main (String[] args){

    Display d1 = new Display(new StringDisplayImpl("Hello,China."));

    Display d2 = new CountDisplay(new StringDisplayImpl("Hello,World."));

    CountDisplay d3 = new CountDisplay(new StringDisplayImpl("Hello,Universe."));

    d1.display();

    d2.display();

    d3.display();

    d3.multiDisplay(); //CountDisplay子類的新功能函數

  }

}

四.UML圖

1.資料是這麽寫的

CountDisplay--->Display<--->DsplayImpl<---StringDisplayImpl

2.我覺得是這樣

CountDisplay--->Display<--->StringDisplayImpl--->DsplayImpl

  

  

設計模式(9)Bridge橋梁設計模式