Birdge模式


public abstract class DisplayImpl {

	public abstract void rawOpen();

	public abstract void rawPrint() ;

	public abstract void rawClose();

}
/*
 * Display類的功能是抽象的,負責”顯示一些東西“。該類位於”類功能層次結構“的最上層。
 * 在impl字段中保存的是實現了Display類的具體功能的實例(impl是implementtation(實現)的縮寫
 * 該實例通過Display類的構造函數被傳遞給Display*/

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();
 }
}
/*類的功能層次結構*/
public class CountDisplay extends Display {

	public CountDisplay(DisplayImpl impl) {
		super(impl);
		// TODO Auto-generated constructor stub
	}
	public void multiDisplay(int times) {
		open();
		for(int i=0;i<times;i++) {
			print();
		}
		close();
	}

}

public class StringDisplayImpl extends DisplayImpl {
	private String string;
	private int width;
	public StringDisplayImpl(String string) {
		this.string=string;
	}
	@Override
	public void rawOpen() {
		printLine();
		
	}

	private void printLine() {
		System.out.println("+");
		for(int i=0;i<width;i++) {
			System.out.println("-");
		}
		System.out.println("+");
		
	}
	@Override
	public void rawPrint() {
		System.out.println("|"+string+"|");
	}

	@Override
	public void rawClose() {
		printLine();
	}

}

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);
}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章