設計模式 (十一)橋模式(birdge)

簡單的橋模式(birdge)將抽象與其實現解耦合,使他們的可以獨立地變化,中文裏把派生類叫做抽象的實現,而橋模式中所講的實現恰恰不是這個意思,橋模式中的抽象類及派生類,實現指的是這些抽象類及派生類實現自己的方式。

簡單的橋模式(birdge)的原理圖



下面是關於這個模式的簡單的一個例子程序,有一個鼠標抽象類,其這個鼠標分別屬於聯想和宏基生產的,這樣用橋模式通過組合和繼承,簡單的實現了這種邏輯關係,並且達到了良好的複用,其實在實現的原理方面和上一個模--------裝飾模式的實現原理是一樣的:

package com.designpattern.bridge;

public abstract class Mouse {

	private Computer computer;

	public Mouse(Computer computer) {
		this.computer = computer;
	}

	public void produce() {
		this.computer.produce();
	}
}

package com.designpattern.bridge;

public interface Computer {
	public void produce();
}

package com.designpattern.bridge;

public class BlackMouse extends Mouse {

	public BlackMouse(Computer computer) {
		super(computer);
	}

	@Override
	public void produce() {
		super.produce();
		System.out.println("blackMouse");
	}

}

package com.designpattern.bridge;

public class RedMouse extends Mouse {

	public RedMouse(Computer computer) {
		super(computer);
	}

	@Override
	public void produce() {
		super.produce();
		System.out.println("redMouse");
	}

}

package com.designpattern.bridge;

public class Lenovo implements Computer {

	@Override
	public void produce() {
		System.out.print("Lenovo's ");

	}

}

package com.designpattern.bridge;

public class Acer implements Computer {

	@Override
	public void produce() {
		System.out.print("Acer's ");

	}

}

package com.designpattern.bridge;

public class Client {
	public static void main(String[] args) {
		new BlackMouse(new Lenovo()).produce();
		new RedMouse(new Lenovo()).produce();
		new BlackMouse(new Acer()).produce();
		new RedMouse(new Acer()).produce();
	}
}

使用橋模式,能夠提供比使用繼承關係更靈活的功能,他可以使抽象和實現分離開,降低了耦合關係。當有新的抽象類或實現方式時,之需要集成一個抽象和繼承一個實現即可。

如果如需重新抽象出另外的一個類型,則需要修改抽象。比如前面除了電腦品牌和鼠標之外,還可以把鼠標分爲無線和有線,此時就需要重新抽象出一個類型來。

發佈了117 篇原創文章 · 獲贊 530 · 訪問量 61萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章