java23種設計模式--橋接模式(bridge)

     橋接模式就是把事物和其具體實現分開,使他們可以各自獨立的變化。橋接的用意是:將抽象化與實現化解耦,使得二者可以獨立變化,像我們常用的JDBC橋DriverManager一樣,JDBC進行連接數據庫的時候,在各個數據庫之間進行切換,基本不需要動太多的代碼,甚至絲毫不用動,原因就是JDBC提供統一接口,每個數據庫提供各自的實現,用一個叫做數據庫驅動的程序來橋接就行了。我們來看看關係圖:

實現代碼:

先定義接口:

public interface Sourceable {
	public void method();
}
public class SourceSub1 implements Sourceable {

	@Override
	public void method() {
		System.out.println("this is the first sub!");
	}
}
public class SourceSub2 implements Sourceable {

	@Override
	public void method() {
		System.out.println("this is the second sub!");
	}
}

定義一個橋,持有Sourceable的一個實例:

public abstract class Bridge {
	private Sourceable source;

	public void method(){
		source.method();
	}
	
	public Sourceable getSource() {
		return source;
	}

	public void setSource(Sourceable source) {
		this.source = source;
	}
}
public class MyBridge extends Bridge {
	public void method(){
		getSource().method();
	}
}

測試類:

 
public class BridgeTest {
	
	public static void main(String[] args) {
		
		Bridge bridge = new MyBridge();
		
		/*調用第一個對象*/
		Sourceable source1 = new SourceSub1();
		bridge.setSource(source1);
		bridge.method();
		
		/*調用第二個對象*/
		Sourceable source2 = new SourceSub2();
		bridge.setSource(source2);
		bridge.method();
	}
}

output:

this is the first sub!
this is the second sub!

     這樣,就通過對Bridge類的調用,實現了對接口Sourceable的實現類SourceSub1和SourceSub2的調用。接下來我再畫個圖,大家就應該明白了,因爲這個圖是我們JDBC連接的原理,有數據庫學習基礎的,一結合就都懂了。

 

 

 

如有轉載,請說明出處:http://blog.csdn.net/zhangerqing

 

橋接模式跟裝飾者模式實現方式上很像:

      橋接模式是適應多個維度變化的一種模式,比如一個日誌類,它面向多個平臺,這是一種變化,記錄日誌的手段不同(json或xml或特定格式),這又是一種變化.橋接模式就是在於利用對象的組合將這兩個維度上的變化分開,比如不同平臺的實現方式可以成爲一個被組合的成員對象,向上提供接口,而不同手段的變化則體現在子類上.

 

      裝飾模式是適應新需求的不斷增加的一種模式,在.net中的典型應用就是stream,對於一個stream類要求它增加一個緩存的功能,又要求它再增加一個加密的功能,這一個又一個新增的功能就像是一個個新的裝飾品.以stream爲例,該模式實現的要點在於利用對象的組合將stream作爲一個成員對象,再新增成員函數來實現緩存,然後再以這個新對象作爲成員對象,新增成員函數來實現加密,這樣新的對象就既有緩存又有加密的功能了,避免了類爆炸,一層一層地嵌套,

 

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