1、核心:
将一个类的接口转换成客户希望的另一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。
2、模式中的角色:
-目标接口(Target):客户所期待的接口,目标可以是具体的或抽象的类也可以是接口。
-需要适配的类(Adaptee):需要适配的类或适配者类。
-适配器(Adapter):通过包装一个需要适配的对象,把原接口装换成目标接口。
3、应用场景
-java.io.InputStreamReader(InputStream)
-java.io.OutputStreamWriter(OutputStream)
4、代码示例
/**
* 被适配的对象
* @author ly1
*
*/
public class Adaptee {
public void request(){
System.out.println("能够完成请求!");
}
}
/**
* 目标接口
* @author ly1
*
*/
public interface Target {
void specialRequest();
}
/**
* 适配器,实现了Target接口,拥有Adaptee的引用
* @author ly1
*
*/
public class Adapter implements Target{
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
super();
this.adaptee = adaptee;
}
@Override
public void specialRequest() {
adaptee.request();
}
}
/**
* 客户端
* @author ly1
*
*/
public class Client {
public void run(Target t){
t.specialRequest();
}
public static void main(String[] args) {
Client c = new Client();
Adaptee adaptee = new Adaptee();
Adapter adapter = new Adapter(adaptee);
c.run(adapter);
}
}
结果:
能够完成请求!
5、分析
工作中的场景:
-经常用来做旧系统改造和升级
-如果我们的系统开发之后再也不需要维护,那么很多模式都是没必要的,但是不幸的是,事实却是维护一个系统的代价往往是开发一个系统的数倍。