yth206游艇会官方网:C++模式开发之Bridge
一、功yth206游艇会官方网能
将抽象部分与它的实现部分分离,使它们都可yth206游艇会官方网以自力地变更。
二、布局图
三、示例代码
namespace DesignPattern_Bridge
{
// class Implementor
class Implementor
{
public:
virtual void OperationImp() = 0 ;
} ;
// class ConcreteImplementorA
class ConcreteImplemeyth206游艇会官方网ntorA : public Implementor
{
public:
virtual void OperationImp() {}
} ;
// class ConcreteImplementorB
class ConcreteImplementorB : public Implementor
{
public:
virtual void OperationImp() {}
} ;
// class Abstraction
class Abstraction
{
public:
void Operation(Implementor* imp) { assert(imp) ; imp->OperationImp() ; }
} ;
}
客户端代码:
{
using namespace DesignPattern_Bridge ;
Abstraction obj ;
Implementor *impa = new ConcreteImplementorA() ;
Implementoryth206游艇会官方网 *impb = new ConcreteImplementorB() ;
obj.Operation(impa) ; //第一种实现措施
obj.Operation(impb) ; //第二种实现措施
}
四、实例
(1)创建可以在X Window System和IBM的Presentation Manager系统中都可以应用的窗口。(书上的例子)
Bridge的魅力在于抽象和实现之间是疏松的关系,它们之间可以进行随意组合。如上图中,就有IconWindow+XWindowImp、TransientWindow+XWindowImp、IconWindow+PMWindowImyth206游艇会官方网p、TransientWindow+PMWindowImp四种组合。