adaptor设计模式学习笔记

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


核心作用

作为两个不同接口之间的中间转换者(尽可能避免修改已有源码,将变化隔离在适配器中),解决不同接口之间不兼容问题

一、核心概念

目标接口(Target):定义客户所需接口,可以是一个抽象类或接口,也可以是具体类

原接口(Adaptee):需要被“适配”的原接口,它是已经存在的类或接口等,包含了客户希望使用的某个方面或职责业务方法

适配器(Adapter):它的职责就是要把原接口转换成目标接口,对Adaptee和Target进行适配

注意事项
通常,apdator模式是解决已经存在的问题,即项目也许已经在服役了,并不是项目设计时使用模式

二、C++伪代码示例

假如某系统已经存在一套文件操作接口(FILE_IO类),但客户的使用的接口是符合POSIX规范的(STD_IO)

-------------------------------------------------------------------------

/*以适配打开open函数为例*/
/*原接口*/
class FILE_IO{
 fopen(char * file_io_arg);
 /*其它省略.......*/
};

/*目标接口*/
class STD_IO{
 virtual open(char * std_io_arg);
 /*其它省略.......*/
};


/*adaptor适配器,继承STD_IO*/
class STD_IO_ADAPTOR : public STD_IO{
private:
 FILE_IO * adatee;
 
public:
 /*构造函数*/
 STD_IO_ADAPTOR(){
     this->adatee = new FILE_IO();
 }
 /*析构函数*/
 ~STD_IO_ADAPTOR(){
     delete  this->adatee;
 }
 int open(char * std_io_arg){
     /*这里用伪代码示意参数之间的转换,实际也许要复杂得多*/
     char * file_io_arg = arg_transform(std_io_arg);
     return this->adatee->open(file_io_arg);
 }
};

总结

--------------------------------------------------------------------------
优点
适配器模式比较简单,就是再不修改原来接口的情况下使其适应另一种接口需求。
实际情况中,往往目标类和适配者类是已经存在的,这样就只需要额外加入一个适配器类即可。
通过引入一个适配器类来将目标类和适配者类解耦。
符合“开闭原则”,可以很方便的更换和新增适配器类。
缺点
过度的使用会让系统变得很复杂,比如,明明看到调用的是 A 接口,其实内部被适配成了 B 接口的实现。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值