標籤:time open 分享圖片 abstract action static bridge 分享 功能實現
橋接模式-Bridge
橋樑模式的用意是"將抽象化(Abstraction)與實現化(Implementation)脫耦, 將"類的功能階層" 與 "類的實現階層"分離為兩個獨立的類階層.
類的實現層次介面DisplayImpl介面
public interface DisplayImpl { void rawOpen(); void rawPrint(); void rawClose();}StringDisplayImpl類
public class StringDisplayImpl implements DisplayImpl { private String string; private int width; public StringDisplayImpl(String string) { this.string = string; this.width = string.getBytes().length; } public void rawOpen() { printLine(); } public void rawPrint() { System.out.println("|" + string + "|"); } public void rawClose() { printLine(); } private void printLine() { System.out.print("+"); for (int i = 0; i < width; i++) { System.out.print("-"); } System.out.println("+"); }}類的功能階層Display類
在功能實現的最高層上關聯了DisplayImpl介面, 在此處進行了橋接.
public class Display { private DisplayImpl impl; public Display(DisplayImpl impl) { this.impl = impl; } public void open() { impl.rawOpen(); } public void print() { impl.rawPrint(); } public void close() { impl.rawClose(); } public final void display() { open(); print(); close(); }}CountDisplay類
在Display類的基礎上, 進行功能上的擴充. 擴充一個multiDisplay()功能.
public class CountDisplay extends Display { public CountDisplay(DisplayImpl impl) { super(impl); } public void multiDisplay(int times) { open(); for (int i = 0; i < times; i++) { print(); } close(); }}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(5); }}
橋接模式-Bridge(Java實現)