版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
1. 定义
适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。
类似电源适配器、转接口、转换器等,解决两者接口不匹配或结构不兼容的问题。
2. 设计
主要角色:
目标类(Target),定义客户需要的接口。可以是抽象类或者接口,或者具体类。被适配类(Adaptee),定义需要适配的接口。一般为具体类。适配器类(Adapter),继承目标,引用被适配类,对目标和被适配类进行适配。也可以都采用继承的方式。
类图如下:
具体有这几种实现:
继承方式,类适配器。组合方式,对象适配器。接口的默认空实现,接口适配器。
2.1. 类适配器
通过继承来实现适配功能。
目标接口,定义要转换后的接口。
public interface Target { void request(); }
适配者类,定义要被转换的接口。
public class Adaptee { public void adapteeRequest() { System.out.println("adaptee Request"); } }
适配器,像变魔术一样接口转换。
public class Adapter extends Adaptee implements Target { public void request() { adapteeRequest(); } }
客户端使用对比:
public class TestAdapter { public static void main(String[] args) { // 适配前的接口 Adaptee adaptee = new Adaptee(); adaptee.adapteeRequest(); // 适配后的接口 Target target = new Adapter(); target.request(); } }
2.2. 对象适配器
通过组合来实现适配功能。<