适配器模式

适配器模式是将一个类的接口转换成我们想要的接口,如类A和类B分别有接口virtual void getinfoA(), virtual void getinfoB(), 如果我们想不管使用哪个类对象都调用getinfoA,应该如何做呢?这个例子不太明显,可以参考去不同地区国家的时候需要带充电适配器。
我们可以使用适配者模式,他可以将由于接口不兼容而不能一起工作的类很好的合作完成工作

class adapt_testA {
public:
    virtual std::string getname() {
        return str_name_;
    }
private:
    std::string str_name_;
};

class adapt_testB {
public:
    adapt_testB(std::string str) :str_name_(str) {}
    virtual std::string gettestname() {
        return str_name_;
    }
private:
    std::string str_name_;
};

class adapt : adapt_testA {
public:
    adapt(const std::shared_ptr<adapt_testB>& sp) : sp_testb_(sp) {}
        
    std::string getname() {
        if (sp_testb_) {
            return sp_testb_->gettestname();
        }
        return "";
    }
private:
    std::shared_ptr<adapt_testB> sp_testb_;
};

int main() {
    {
        std::shared_ptr<adapt> sp(std::make_shared<adapt>(std::make_shared<adapt_testB>("aaa")));
        std::cout << sp->getname() << std::endl;
    }
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容