一、意图
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
二、使用性
- 你想使用一个已经存在的类,而它的接口不符合你的需求。
- 你想创建一个可以复用的类,该类可以与其他不想关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
- (仅使用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配他们的接口。对象适配器可以适配它的父类接口。
三、结构
- 类适配器模式使用多重继承对一个接口与另一个接口进行匹配
- 对象适配器依赖于对象组合
四、代码
类结构型模式:
SixVolt.java
//Target 角色
public interface SixVolt {
int getVolt6() ;
}
//Adaptee 角色,需要转换的对象
public class Volt220 {
public int getVolt220(){
return 220;
}
}
public class Adapter extends Volt220 implements SixVolt {
@Override
public int getVolt6() {
return 6;
}
}
public class Client {
public static void main(String[] args){
Adapter adapter = new Adapter();
System.out.println("输出电压: "+adapter.getVolt6());
}
}
输出:
输出电压: 6
对象结构型模式
public interface SixVolt {
int getVolt6();
}
public class Volt220 {
public int getVolt220(){
return 220;
}
}
public class Adapter implements SixVolt{
Volt220 volt220 ;
public Adapter( Volt220 adaptee){
volt220 = adaptee;
}
@Override
public int getVolt6() {
return 6;
}
public int getVolt220(){
return volt220.getVolt220();
}
}
public class Client {
public static void main(String[] args){
System.out.println("输出的电压: "+new Adapter(new Volt220()).getVolt6());
}
}