簡單的橋模式(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();
}
}
~~~
使用橋模式,能夠提供比使用繼承關系更靈活的功能,他可以使抽象和實現分離開,降低了耦合關系。當有新的抽象類或實現方式時,之需要集成一個抽象和繼承一個實現即可。
如果如需重新抽象出另外的一個類型,則需要修改抽象。比如前面除了電腦品牌和鼠標之外,還可以把鼠標分為無線和有線,此時就需要重新抽象出一個類型來。
- 前言
- 前言(目錄、源碼、資料)
- (一)簡單工廠模式(SimpleFatory)
- (二)工廠方法模式(FactoryMethod)
- (三)抽象工廠模式(AbstractFactory)
- (四)創建者模式(Builder)
- (五)原型模式(Prototype)
- (六)單例模式(Singleton)
- (七)外觀模式(Facade)
- (八)適配器模式(Adapter)
- (九)代理模式(Proxy)
- (十)裝飾模式(Decorator)
- (十一)橋模式(birdge)
- (十二)組合模式(Composite)
- (十三)享元模式(Flyweight)
- (十四)模板方法模式(Template)
- (十五)觀察者模式(Observer)
- (十六)狀態模式(State)