美文网首页
设计模式-结构模式-桥接模式

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

作者: 阿棍儿_Leon | 来源:发表于2020-04-28 21:24 被阅读0次

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

    以下代码定义了一个实现类,它要求子类实现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()
    

    相关文章

      网友评论

          本文标题:设计模式-结构模式-桥接模式

          本文链接:https://www.haomeiwen.com/subject/fpnbwhtx.html