翻译软件、电源插座就是一种适配模式。
定义:(两种方式:组合方式和继承方式)
适配器模式将一个类的接口,转换成客户期望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。
1、组合方式
采用组合方式的适配器成为对象适配器
特点:把“被适配者”作为一个对象组合到适配器类中,以修改目标接口包装被适配者
1)定义一个接口类:三相插座
package net.dalimo.adapter;
/*
* 三相插座接口
*
*/
public interface ThreePlugIf {
//使用三相电流供电
void powerWithThree();
}
2)定义一个类:国标二相插座
package net.dalimo.adapter;
public class GBTwoPlug {
//使用二相电流供电
public void powerWithTwo(){
System.out.println("使用二相电流供电");
}
}
3)定义一个类:二相插座转化类
package net.dalimo.adapter;
public class TwoPlugAdapter implements ThreePlugIf {
private GBTwoPlug plug;
public TwoPlugAdapter(GBTwoPlug plug) {
this.plug=plug;
}
@Override
public void powerWithThree() {
System.out.println("通过转化");
plug.powerWithTwo();
}
}
4)定义一个类:笔记本电脑及测试类
package net.dalimo.adapter;
public class NoteBook {
private ThreePlugIf plug;
public NoteBook(ThreePlugIf plug){
this.plug=plug;
}
public void charge(){
plug.powerWithThree();
}
public static void main(String[] args) {
GBTwoPlug two=new GBTwoPlug();
ThreePlugIf three=new TwoPlugAdapter(two);
NoteBook nb =new NoteBook(three);
nb.charge();
}
}
2、继承方式
采用继承方式的称为类适配器
特点:通过多重继承不兼容接口,实现对目标接口的匹配,单一的为某个类而实现适配
1)新建一个继承类
package net.dalimo.adapter;
/**
* 采用继承方式的插座适配器
*
*/
public class TwoPlugAdapterExtends extends GBTwoPlug implements ThreePlugIf {
@Override
public void powerWithThree() {
System.out.print("借助继承适配器");
this.powerWithTwo();
}
}
2)在原有notebook类及测试中增加继承方式的测试
package net.dalimo.adapter;
public class NoteBook {
private ThreePlugIf plug;
public NoteBook(ThreePlugIf plug){
this.plug=plug;
}
public void charge(){
plug.powerWithThree();
}
public static void main(String[] args) {
//组合方式测试
GBTwoPlug two=new GBTwoPlug();
ThreePlugIf three=new TwoPlugAdapter(two);
NoteBook nb =new NoteBook(three);
nb.charge();
//继承方式测试
three=new TwoPlugAdapterExtends();
nb=new NoteBook(three);
nb.charge();
}
}