适配器模式:将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能在一起工作的 那些类可以在一起工作了[DP]
UML类图:
简单模拟一下代码:
//已存在的、具有特殊功能、但不符合我们既有的标准接口的类
package com.sjmx.adapter; //已存在的、具有特殊功能、但不符合我们既有的标准接口的类 public class Adaptee { public void specificRequest() { System.out.println("被适配类具有 特殊功能..."); } }
新规范接口:
package com.sjmx.adapter; //目标接口,或称为标准接口 public interface Target { public void request(); }
适配器类:
package com.sjmx.adapter; //适配器类,直接关联被适配类,同时实现标准接口 public class Adapter implements Target { // 直接关联被适配类 private Adaptee adaptee; // 可以通过构造函数传入具体需要适配的被适配类对象 public Adapter (Adaptee adaptee) { this.adaptee = adaptee; } public void request() { // 这里是使用委托的方式完成特殊功能 this.adaptee.specificRequest(); } }
客户端:
package com.sjmx.adapter; public class Client { public static void main(String[] args) { // 使用特殊功能类,即适配类, // 需要先创建一个被适配类的对象作为参数 Target adapter = new Adapter(new Adaptee()); adapter.request(); } }
适配器模式属于创建型模式,主要是为了解决两个已有接口之间不匹配的问题,我不需要考虑这些接口是怎么样实现的,也不考虑它们各自会如何演化,我的这种方式不需要对两个独立设计的类中任一个进行重新设计,使它们协同工作。我觉得适配器模式应该是处于软件生命周期的末端,针对很多已经开发好的功能进行调用,因为不方便去重新定义接口。