1.概述
桥接模式(Bridge),将抽象部分与它的实现部分分离,是他们都可以独立的变化。什么叫抽象与它的实现分离,这并不是说,让抽象类与其他派生类分离,因为这没有任何意义。实现指的是抽象类和它的派生类用来实现自己的对象。
下面我们看桥接模式的结构图:
(1).Abstraction:定义抽象类的接口并维护指向Implementor类的对象指针。
(2).RefinedAbstraction:扩充Abstraction定义的接口。
(3).Implementor:定义实现类的接口,该接口不一定要与Abstraction的接口完全一致。事实上这两个接口可以完全不同。一般而言,Implementor接口仅提供基本操作,而Abstraction则定义基于这些基本操作的较高层次的操作。
(4).ConcreteImplementor:实现Implementor接口并定义它的具体实现。
桥接模式基本代码如下:
Implementor类:
(2).RefinedAbstraction:扩充Abstraction定义的接口。
(3).Implementor:定义实现类的接口,该接口不一定要与Abstraction的接口完全一致。事实上这两个接口可以完全不同。一般而言,Implementor接口仅提供基本操作,而Abstraction则定义基于这些基本操作的较高层次的操作。
(4).ConcreteImplementor:实现Implementor接口并定义它的具体实现。
桥接模式基本代码如下:
Implementor类:
Implementor
ConcreteImplementor等派生类:
ConcreteImplementorA
Abstraction类:
Abstraction
RefinedAbstraction类:
RefinedAbstraction
2.实例
为了跟深入的了解桥接模式(Bridge),我们来看大话设计模式中手机软件的演变过程。 先来看看小菜的第一版代码,结构如下:
详细代码如下:
HandsetBrand
调用:
调用
下面来小菜的第二方案,结构图如下:
代码如下:
HandsetSoft