设计模式C++实现笔记

ADAPTER-适配器(结构型模式)

2019-01-20  本文已影响0人  lixin_karl

  将一个类的接口转换成客户希望的另外一个接口。

代码实现

一、对象适配器结构实现(基于组合)
class Target{//目标接口,client可以直接调用
public:
    virtual void printName(){
        
    };
};

class Adaptee{//已经存在的接口,此接口需要适配
public:
    std::string getName(){
        return std::string("karl");
    }
};

class Adapter : public  Target{//适配器,对Adaptee接口与Target接口进行适配
public:
    Adapter(Adaptee *adap){
        adaptee = adap;
    }
   void printName () override {
        std::cout<<adaptee->getName()<<std::endl;
    }
private:
    Adaptee *adaptee;
};

int main(){//client,用户只能调用Target相关接口
    Adaptee *a;
    Target *target =new Adapter(a);
    target->printName();
};

二、类适配器结构实现(基于继承)
class Target{//目标接口,client可以直接调用
public:
    virtual void printName(){

    };
};

class Adaptee{//已经存在的接口,此接口需要适配
public:
    std::string getName(){
        return std::string("karl");
    }
};

class Adapter : public  Target, private Adaptee{//对Adaptee接口与Target接口进行适配,私有继承了Adaptee来实现适配
public:
   void printName () override {
        std::cout<<this->getName()<<std::endl;
    }
};

int main(){//client
    Target *target = new Adapter();
    target->printName();
};

适用性

效果

  比较多的会使用对象适配器

参考

上一篇下一篇

猜你喜欢

热点阅读