一、介绍
桥接模式的主要目的是要将类的抽象部分与它的实现分离,使各个不同类之间都能独立的变化和衔接。
二、实例
首先,定义一个抽象的基类,可以说这就是桥梁吧!
public abstract class Soda {
private SodaImp sodaImp;
public void setSodaImp(SodaImp sodaImp) {
this.sodaImp = sodaImp;
}
public SodaImp getSodaImp() {
return this.sodaImp;
}
public abstract void pourSoda();
}
注意这个类中间封装了一个SodaImp的基本操作类,这个类的主要目的也就是通过它的新方法pourSoda()来对外转发SodaImp中的基本动作。
下面的一些个类相对来说要简单些了,都是用来基于已有的桥梁来添砖加瓦的。
//SodaImp抽象类或接口定义
public abstract class SodaImp {
public abstract void pourSodaImp();
}
//实例化的Soda类(可以定义多个)
public class MediumSoda extends Soda {
public MediumSoda() {
}
public void pourSoda() {
SodaImp sodaImp = this.getSodaImp();
for (int i = 0; i < 2; i++) {
System.out.print("...glug...");
sodaImp.pourSodaImp();
}
System.out.println(" ");
}
}
//实例化的SodaImp类(可以定义多个)
public class CherrySodaImp extends SodaImp {
CherrySodaImp() {}
public void pourSodaImp() {
System.out.println("Yummy Cherry Soda!");
}
}
而实际调用的过程可以示例如下:
class TestBridge {
public static void testCherryPlatform() {
System.out.println(
"testing medium soda on the cherry platform");
MediumSoda mediumSoda = new MediumSoda();
mediumSoda.setSodaImp(new CherrySodaImp());
mediumSoda.pourSoda();
}
public static void main(String[] args) {
testCherryPlatform();
...
}
}
三、分析
从以上的实例,我们大致可以总结出桥接模式的几个主要角色:
- Abstraction 定义抽象类的接口,维护一个指向Implementor类型对象指针
实现一个桥接模式,我们需要定义Abstraction的桥接抽象类,并注意在其中封装Implementor的实现,其他的应该都显而易懂。
作为一种设计模式,桥接模式的主要特点就是:
1、分离接口及其实现部分,这里实现了Abstraction和Implementor的分离,有助于降低对实现部分的依赖性,从而产生更好的结构化系统。
2、提高了可扩充性,可以独立的对Abstraction和Implementor层次结构进行扩充。