一、什么是适配器模式?
适配器模式定义:
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
类型:结构型模式
顺口溜:适装桥组享代外
二、适配器模式UML
三、JAVA代码实现
package com.amosli.dp.structural.adapter;
public interface Target {
public void request();
}
package com.amosli.dp.structural.adapter;
/**
* 适配器
*
* @author amosli
*
*/
public class Adapter implements Target {
private Adaptee adaptee = new Adaptee();
@Override
public void request() {
adaptee.specialRequest();
}
}
package com.amosli.dp.structural.adapter;
public class Adaptee {
public void specialRequest() {
System.out.println("special...");
}
}
package com.amosli.dp.structural.adapter;
/**
* 客户端
*
* @author amosli
*
*/
public class Client {
public static void main(String[] args) {
Target adapter = new Adapter();
adapter.request();
}
}
四、使用场景
你想使用一个已经存在的适配器模式,而他的接口不符合你的需求。你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类协同工作。你想使用一些已经存在的子类,但是不可能对每一个都进行子类化已一匹配他们的接口,对象适配器可以适配他的父类接口。 适配器如同一个常见的变压器,也如同电脑的变压器和插线板之间的电源连接线,他们虽然都是3相的,但是电脑后面的插孔却不能直接插到插线板上。
1 系统需要使用现有的类,而这些类的接口不符合系统的接口。
2 想要建立一个可以重用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。
3 两个类所做的事情相同或相似,但是具有不同接口的时候。
4 旧的系统开发的类已经实现了一些功能,但是客户端却只能以另外接口的形式访问,但我们不希望手动更改原有类的时候。
5 使用第三方组件,组件接口定义和自己定义的不同,不希望修改自己的接口,但是要使用第三方组件接口的功能。
适配器模式一般用于对于已有的设计进行衔接,不要在系统设计之初就开始考虑使用适配器模式,尽量使用其他模式代替!
五、源码地址
本系列文章源码地址,https://github.com/amosli/dp 欢迎Fork & Star !!