适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
  在软件开发中,也就是系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。
    适配器模式包括两种类型:类适配器模式和对象适配器模式。
    
何时使用适配器模式:
    在想使用一个已经存在的类,但如果他的接口,也就是他的方法和你的要求不相同时,就应该考虑用适配器模式。
    要在双方都不太容易修改的时候在使用适配器模式适配,而不是一有不同时就使用它

 //这是客户所期待的接口。目标可以是具体或抽象的类,也可以是接口。
public class Target {
public void request(){
System.out.println("普通请求");
}
}

适配器:

 //Adapter(通过在内部包装一个Adaptee对象,把源接口转换成目标接口
public class Adapter extends Target{ //建立一个私有的Adaptee对象
private Adaptee adaptee = new Adaptee(); @Override
public void request() {
//这样就可以把表面上调用request()方法变成实际调用specificRequest()
adaptee.specificRequest();
}
}

需要适配的类:

 //需要适配的类
public class Adaptee {
public void specificRequest(){
System.out.println("特殊请求!");
}
}
 //客户端
public class Client {
public static void main(String[] args) {
//对客户端来说,调用的就是Target的request()。但实际调用的是specificRequest() Target target = new Adapter();
target.request();//特殊请求!
}
}

UML图:

  

最新文章

  1. JHChart iOS图表工具库1.0.3新版本详解
  2. Java中对数据库的查询和增加内容
  3. Windows Azure Virtual Machine (26) 使用高级存储(SSD)和DS系列VM
  4. 【英文版本】Android开源项目分类汇总
  5. php删除字符串中的所有空格
  6. 与你相遇好幸运,Tippecanoe在Centos下の安装
  7. linux 磁盘管理学习笔记
  8. MyEclipse设置默认的文档注释
  9. 学习hadoop
  10. 用VC实现竖写汉字的方法
  11. Saving James Bond(dijk)
  12. Spring Boot2.0自定义配置文件使用
  13. [C][代码实例]冒泡排序
  14. flask操作简章
  15. BZOJ2818: Gcd 欧拉函数
  16. Angular 4 延缓加载组件
  17. QuantLib 金融计算——数学工具之数值积分
  18. 二维码Zxing&Zbar
  19. 百度feed 寒假实习 一面二面(offer)
  20. 【luogu P1726 上白泽慧音】 题解

热门文章

  1. Redis相关语法
  2. iOS7 断了统计和追踪用户的后路
  3. WPF MVVM模式不用Prism
  4. activiti 连线
  5. 2018-11-26-win10-uwp-获取窗口的坐标和宽度高度
  6. Vuex持久化存储之vuex-persist
  7. mysql InnoDB: Assertion failure in thread xxxx in file ut0mem.cc line 105
  8. leetcode 324 Wiggle Sort 2
  9. php冒泡算法
  10. 常见的5个runtime exception