设计模式之bridge模式
原创
©著作权归作者所有:来自51CTO博客作者chenchao40322的原创作品,请联系作者获取转载授权,否则将追究法律责任
bridge模式主要用于将抽象和行为进行解耦,使两者可以独立变化。
主要应用在以下场合:
- 存在相对并列的子类属性。
- 存在概念上的交叉。
- 可变性。
如果不使用bridge模式,抽象和行为的多种组合将导致子类爆炸问题。使用bridege模式,我们
设计两个接口:抽象接口和行为接口,在抽象接口里面保存行为接口的指针,通过设置不同的
行为实现类,使对象程序不同行为。
代码:
// 维护一个Implementor类的指针
class Abstraction
{
public:
Abstraction(Implementor* pImplementor);
virtual ~Abstraction();
void Operation();
protected:
Implementor* m_pImplementor;
};
// 为实现Abstraction定义的抽象基类,定义了实现的接口函数
class Implementor
{
public:
Implementor(){}
virtual ~Implementor(){}
virtual void OperationImpl() = 0;
};
------------------------------------------------------------------------------
// 继承自Implementor,是Implementor的不同实现之一
class ConcreateImplementorA
: public Implementor
{
public:
ConcreateImplementorA(){}
virtual ~ConcreateImplementorA(){}
virtual void OperationImpl();
};
// 继承自Implementor,是Implementor的不同实现之一
class ConcreateImplementorB
: public Implementor
{
public:
ConcreateImplementorB(){}
virtual ~ConcreateImplementorB(){}
virtual void OperationImpl();
};
void ConcreateImplementorA::OperationImpl()
{
std::cout << "Implementation by ConcreateImplementorA\n";
}
void ConcreateImplementorB::OperationImpl()
{
std::cout << "Implementation by ConcreateImplementorB\n";
}
Abstraction::Abstraction(Implementor* pImplementor)
: m_pImplementor(pImplementor)
{
}
Abstraction::~Abstraction()
{
delete m_pImplementor;
m_pImplementor = NULL;
}
void Abstraction::Operation()
{
m_pImplementor->OperationImpl();
}
----------------------------------------------------------------------
client调用:
ConcreateImplementorA *pImplA = new ConcreateImplementorA();
Abstraction *pAbstraction1 = new Abstraction(pImplA);
pAbstraction1->Operation();
ConcreateImplementorB *pImplB = new ConcreateImplementorB();
Abstraction *pAbstraction2 = new Abstraction(pImplB);
pAbstraction2->Operation();
上一篇:linux shell之awk
下一篇:欧几里得算法
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
C++设计模式之Bridge桥模式
Bridge模式使用“对象间的组合关系”解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度来
c++ 设计模式 java Image 多继承 -
设计模式:桥接模式(Bridge)设计模式 桥接模式 ide 子类 数据库