1. 程式人生 > >十一、結構型模式----橋接模式

十一、結構型模式----橋接模式

一、橋接模式

橋接模式就是把事物和其具體實現分開,使他們可以各自獨立的變化。

橋接的用意是:將抽象化與實現化解耦,使得二者可以獨立變化,像我們常用的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連線的原理,有資料庫學習基礎的,一結合就都懂了。

橋接—早上碰到MM,要說早上好,晚上碰到MM,要說晚上好;碰到MM穿了件新衣服,要說你的衣服好漂亮哦,碰到MM新做的髮型,要說你的頭髮好漂亮哦。不要問我“早上碰到MM新做了個髮型怎麼說”這種問題,自己用BRIDGE組合一下不就行了。

橋接模式:將抽象化與實現化脫耦,使得二者可以獨立的變化,也就是說將他們之間的強關聯變成弱關聯,也就是指在一個軟體系統的抽象化和實現化之間使用組合/聚合關係而不是繼承關係,從而使兩者可以獨立的變化。