Bridge
- 目的
- 结构
- 应用
- 结论
- 源码
目的
- 从实现中分离出抽象,因此这两个可以独立改变。.
结构
- Abstraction : 定义一个抽象接口.
- RefinedAbstraction : 扩展抽象定义的接口.
- Implementor : 定义一个实现接口类.
- ConcreteImplementor : 实现实现接口类定义的接口.
应用
- 你想避免抽象及其实现之间的永久绑定,这是一个例子,当在运行时实现必须选择或交换。
- 抽象和其实现应该是可扩展的子类,在这种情况下,桥接模式可以结合不同的抽象和实现和独立地扩展他们。
- 实现一个抽象的变化应该对客户端没有影响;也就是客户端的代码不需要重新编译。
- 你需要完全从客户端隐藏抽象的实现方法。在c++中代表只是显示接口的类。
- 你想在多个对象中共享实现,这就需要从客户端中隐藏。
结论
- 分离接口和实现。
- 提高可扩展性。
- 从客户端中隐藏实现细节。
源码
class Implementor {
public:
void OperationImp();
};
class ConcreteImplementor : public Implementor {
};
#include "Implementor.h"
class Abstraction {
public:
void Operation();
Implementor *imp;
};
#include "Abstraction.h"
class RefinedAbstraction : public Abstraction {
};