关于桥接模式的理解,我推荐这篇博客:桥接模式(Bridge)
什么是桥接模式?
在《设计模式:可复用面向对象软件的基础》一书中这样说的:将抽象部分和它的实现部分分离,使它们都可以独立的变化。简单粗暴的说,就是抽象对外提供调用的接口;对外隐瞒实现部分,在抽象中引用实现部分,从而实现抽象对实现部分的调用,而抽象中引用的实现部分可以在今后的开发过程中,切换成别的实现部分。
UML类图:
代码实现示例:
///////////////////////////////////////////////////////////////////////////
class operation_base {
public:
virtual void do_operation() = 0;
};
class operation_impl : public operation_base {
public:
void do_operation() {
std::cout<<"this is operation_impl."<<std::endl;
}
};
///////////////////////////////////////////////////////////////////////////
class abstraction {
public:
abstraction(operation_base* opbs)
: opbs_(opbs) {}
virtual void do_operation() = 0;
protected:
operation_base *opbs_;
};
class refined_abstraction : public abstraction {
public:
refined_abstraction(operation_base* opbs)
: abstraction(opbs) {}
void do_operation() {
opbs_->do_operation();
}
};
/////////////////////////////////////////////////////////////////////////////
int main()
{
operation_base *opbs = new operation_impl;
abstraction *abst = new refined_abstraction(opbs);
abst->do_operation();
delete opbs;
delete abst;
return 0;
}