桥接模式 与上一节的Adapter模式类似,是 媒介模式的一种。
桥接模式 的意义是将 抽象(Abstraction)与实现(Implementation)解耦,使得二者可以独立地变化。
通过 抽象类 Abstraction 对 实现类 Implementor 的调用,实现松耦合关系,Implementor
负责实现核心功能,作为一个媒介调用方式,桥接模式看上去 和 适配器模式很类似,其区别和联系可以总结为:
1. 适配器模式 与 桥接模式 同样作用于两个模块,实现巧妙的模块调用和关联,都可堪称 诸葛亮;
2. 适配器 用于改变现有接口,在其基础上封装,可以看成是 事后诸葛亮;
桥接模式 从设计时开始分离,这是优秀的模块化思想,是 事前诸葛亮;
直接上代码:
// 前向声明
class Implement;
// 抽象类
class Abstraction
{
public:
void sendMsg(void *data)
{
m_Impl.sendMsg(data);
}
protected:
Implement m_Impl;
};
// 实现类
class Implement
{
public:
void sendMsg(void* data);
};
// 调用
void main()
{
Abstraction msgSender;
msgSender.sendMsg("Linolzhang - data");
}
系统在调用 Abstraction 抽象接口时,实际上是隐藏了实际的实现,在这种模式下,如果用户想对具体实现进行修改,只需要对Impement类的CPP文件进行修改,或者按照类图中的方式,以继承的方式对实现接口进行重写。
桥接模式 用一句话概括为:通过封装代替继承 实现 抽象与实现分离。