简单的桥模式(birdge)将抽象与其实现解耦合,使他们的可以独立地变化,中文里把派生类叫做抽象的实现,而桥模式中所讲的实现恰恰不是这个意思,桥模式中的抽象类及派生类,实现指的是这些抽象类及派生类实现自己的方式。
简单的桥模式(birdge)的原理图
![](https://box.kancloud.cn/2016-07-12_57845609804f5.png)
下面是关于这个模式的简单的一个例子程序,有一个鼠标抽象类,其这个鼠标分别属于联想和宏基生产的,这样用桥模式通过组合和继承,简单的实现了这种逻辑关系,并且达到了良好的复用,其实在实现的原理方面和上一个模--------装饰模式的实现原理是一样的:
~~~
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)