适配器模式
将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
Adapter 模式的宗旨:保留现有类所提供的服务,向客户提供接口,以满足客户的期望。
首先应该明白一点,适配器是最后的补救措施,应该在功能设计的时候尽量避免。所以请在设计功能的时候忘掉这个模式。
类结构图
Target
用户期待的目标接口。
Adapter
适配器,通过在内部包装一个 Adaptee 对象,把源接口转换成目标接口。
Adaptee
需要适配的类或接口。
代码示例
/**
* 提供给客户的目标接口
*/
public interface Target {
void newMethod();
}
/**
* 适配器
*/
public class Adapter implements Target {
private Adaptee adaptee = new ConcreteAdaptee();
@Override
public void newMethod() {
adaptee.oldMethod();
}
}
/**
* 项目原先的老接口不需要改动
*/
public interface Adaptee {
void oldMethod();
}
/**
* 老接口的具体实现
*/
public class ConcreteAdaptee implements Adaptee {
@Override
public void oldMethod() {
System.out.println("老接口功能 method!");
}
}
客户端示例
public class Client {
public static void main(String[] args) {
Target target = new Adapter();
target.newMethod();
}
}
运行结果
老接口功能 method!
Process finished with exit code 0
使用场景
只要记住一点。当你有动机修改一个已经投入生产的接口,这时候就可以考虑试用适配器模式。适配器模式是用于解决接口不兼容问题有效方法。
优点
- 可以让任何两个没有关联的类一起运行。
- 提高了类的复用。
- 增加了类的透明度。
- 灵活性好。
缺点
过多地使用适配器,会让系统非常零乱,不易整体进行把握。
注意事项:适配器不是在详细设计时添加的,而是解决正在服役的项目的问题。