写点什么

软件设计模式: 适配器模式

作者:正向成长
  • 2022 年 4 月 02 日
  • 本文字数:744 字

    阅读完需:约 2 分钟

软件设计模式:适配器模式

适配器模式(Adapter)将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。


在软件开发中,也就是系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况,比如在需要对早期代码复用一些功能等应用上很有实际价值。


我经常将适配器和电源适配器进行类比,我国的电压是 220V,日本是 110V,我们的设备在那边使用便需要一个电源适配器进行适配。


适配器模式,别名包装器(Wrapper),属于结构模型,存在三种角色

  • Target,即目标抽象类,当前业务系统期待的抽象接口

  • Adaptee,即适配者类,当前业务系统已经存在的实现接口,是待被适配的对象。

  • Adapter,即适配器类,它是一个转换器,通过继承或引用适配者的对象,把适配者对外的接口转换成目标抽象类接口,从而实现客户端可以通过统一的目标抽象类接口来访问适配者类。


在实现时,可以采用类适配器和对象适配器两种,前者采用继承方式实现,后者采用组合的方式。前者对耦合度比较高,一般不采用。

结构与实现

类适配器的 UML 图



// 类适配器实现class ClassAdapter : public Target, private Adaptee {public:    void Requet() {        std::cout << "类适配器实现适配功能 ";        SpecialRequet();    }};
复制代码


对象适配器 UML 图


// 对象适配器class ObjectAdapter : public Target{public:    void Requet() {        std::cout << "对象适配器实现适配功能 ";        adaptee.SpecialRequet();    }
private: Adaptee adaptee;};
复制代码


源代码实现

  1. C++类适配器和对象适配器实现源码

参考资料

  1. 《大话设计模式》

  2. 23种设计模式——结构型设计模式(7种)


发布于: 刚刚阅读数: 2
用户头像

正向成长

关注

正向成长 2018.08.06 加入

想要坚定地做大规模数据处理(流数据方向),希望结合结合批处理的传统处理方式,以及之后流批混合处理方向进行学习和记录。

评论

发布
暂无评论
软件设计模式:适配器模式_设计模式_正向成长_InfoQ写作平台