将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。

(1)目标(Target)——客户所期待得到的接口,目标可以是具体的或抽象的类,也可以是接口。

(2)源(Adaptee)——已经存在的、需要适配的类。源可以是具体的或抽象的类,也可以是接口。

(3)适配器(Adapter)——适配器是本模式的核心。适配器把源接口转换成目标接口。显然,这一角色不可以是接口,而必须是实类。

类适配器模式与对象适配器模式的不同之处在于二者包装Adaptee源角色时,类适配器包装的是Adeptee类,而对象适配器则直接包装了一个源Adepter的实例。此处的差别导致了在具体实现时各个角色的不同实现方式(以类还是接口)。

类适配器:

对象适配器:

使用类适配器: 比较容易置换适配者的方法(对象适配器需要先做好适配者的子类将方法置换,后将子类当做适配者进行适配)。

使用对象适配器(1)当Adaptee中添加方法时,Adapter类不需要做任何更改调整,也能正确地进行动作。

(2)可以使用多态的方式在Adapter类中调用Adaptee类子类的方法。

建议使用对象适配器,能使用对象组合的方式,就不使用继承的方式。

最新文章

  1. EF架构~DefaultValue让我的UnitOfWork更可读
  2. JPA 教程
  3. .htaccess设置自定义出错页面
  4. Python3 字符串
  5. 大数据测试之hadoop命令大全
  6. 有关PowerShell脚本你必须知道的十个基本概念
  7. JQuery实现页面企业广告图片切换和新闻列表滚动效果
  8. 字符串和数组中split().toString(),join(),splice(),slice(),substr()和substring()
  9. 让C# Excel导入导出,支持不同版本的Office
  10. 文档API生成神器SandCastle使用心得
  11. 在centos7中手动编译greenplum
  12. Unity UGUI基础之Button
  13. Hibernate Search集与lucene分词查询
  14. missing gradle project information
  15. C#:添加web service引用
  16. uva 1513(线段树)
  17. sqlserver数据库使用空间监控
  18. 【转】how can i build fast
  19. linux源码安装apache
  20. Python3中文教程

热门文章

  1. jquery判断是pc端还是移动端
  2. JAVA基础_自定义泛型
  3. 【转载】一定要会用selenium的等待,三种等待方式必会
  4. 使用Python实现不同目录下文件的拷贝
  5. 第四周课堂笔记1th
  6. 保持SSH连接的linux服务器不断线
  7. C++ 标准文件的写入读出(ifstream,ofstream)
  8. JavaScript编程基础
  9. SEO-----网站不被收录的原因
  10. JS全局函数里面的一些区别