定义:
适配器模式是将一个类的接口转化成客户希望的另外一个接口
使得原来不能兼容的类可以在一起工作
主要角色:
Target:客户端要求的目标接口
被适配角色:Adaptee 需要适配的一个现在正在使用的接口
适配器角色:Adapter 把被适配角色的接口转换成目标接口
UML效果图:
适配器模式分为类适配器模式和对象适配器模式,区别在于实现适配器模式的时候是使用继承方式还是组合方式
在这里使用对象适配器模式来实现一个简单的适配器模式
// 客户期望的目标接口
package com.pattern.adapter;
public Interface Target{
public void run();//会跑
public void fly();//会飞
}
// 被适配的类
package com.pattern.adapter;
public class Adaptee {
public void run(){
System.out.println("I can Run");
}
}
// 适配器角色
package com.pattern.adapter;
public class Adapter implements Target{
private Adaptee adaptee;
public void setAdaptee(Adaptee adaptee){
this.adaptee= adaptee;
}
public Adaptee getAdaptee(){
return this.adaptee;
}
public void fly(){
System.out.println("I can fly");
}
public void run(){
adaptee.run();
}
}
// 测试类
package com.pattern.adapter;
public class Cilent{
public static void main(String []args){
Adaptee adaptee = new Adaptee();
Adapter adapter =new Adapter();
adapter.setAdaptee(adaptee);
Target target = (Target)adapter;
target.run();
target.fly();
}
}
结果:
I can run
I can fly
优点:
通过适配器,客户端可以调用同一接口,因而对客户端来说是透明的。这样做更简单、更直接、更紧凑,而无需修改原有代码
缺点:
对于对象适配器来说,更换适配器的实现过程比较复杂。