设计模式-结构模式-桥接模式

2020-04-28  本文已影响0人  阿棍儿_Leon

当抽象与实现需要分离时,我们可以用桥接模式。抽象部分是开放的,是用来进行对象之间交互的,所以其重点在于接口定义。实现部分可以是隐秘的,是比较细节的。两者分开之后,是可以做到自身变化不影响对方的。

以下代码定义了一个实现类,它要求子类实现OperationImpl函数。

#include <iostream>

using namespace std;

class Implementor
{
public:
    virtual void OperationImpl()=0;
    virtual ~Implementor(){}
};

以下代码定义了具体实现类,它实现了OperationImpl函数。

class ContreteImplementor:public Implementor
{
public:
    void OperationImpl()
    {
        cout<<__PRETTY_FUNCTION__<<endl;
    }
};

以下代码定义了一个抽象类,它要求子类实现Operation函数。

class Abstraction
{
protected:
    Implementor* m_pAction;
public:
    Abstraction(Implementor* action):m_pAction(action){}
    virtual void Operation()=0;
    virtual ~Abstraction(){}
};
以下代码定义了一个抽象的子类,它利用实现类对象实现了Operation函数。
class RefinedAbstraction:public Abstraction
{
public:
    RefinedAbstraction(Implementor* action):Abstraction(action){}
    void Operation()
    {
        cout<<__PRETTY_FUNCTION__<<"->";
        m_pAction->OperationImpl();
    }
};

以下代码演示了桥接模式,实现类对象先被建立,抽象类用其建立自身对象,然后调用抽象接口,实现则由实现类决定。

int main(void){
    Implementor* implementor = new ContreteImplementor();
    Abstraction* abstraction = new RefinedAbstraction(implementor);
    abstraction->Operation();
    delete abstraction;
    delete implementor;
    return 0;
}

输出

virtual void RefinedAbstraction::Operation()->virtual void ContreteImplementor::OperationImpl()
上一篇下一篇

猜你喜欢

热点阅读