适配器模式
网上一些设计模式功能体现的不够,看不出运用设计模式到底可以得到什么效果
先初始化几个类先,分别是日本110v做饭类,中国220做饭类
日本做饭类
public interface JP110VInterface {
void connect();
}
public class JP110VInterfaceImpl implements JP110VInterface {
@Override
public void connect() {
System.out.println("日本110V,接通电源,开始工作..");
}
}
中国做饭类
public interface CN220VInterface {
void connect();
}
public class CN220VInterfaceImpl implements CN220VInterface {
@Override
public void connect() {
System.out.println("中国220V,接通电源,开始工作");
}
}
现在分别进行工作
JP110VInterface jp110VInterface = new JP110VInterfaceImpl();
CN220VInterface cn220VInterface = new CN220VInterfaceImpl();
jp110VInterface.connect();
cn220VInterface.connect();
得到的效果图如下,可以看到分别进行工作了,但是现在我想要做到日本110v可以在中国做饭,我应该怎么做呢?
目的:日本电饭煲110v在中国进行工作
先初始化一个做饭类,里面是日本110v做饭的功能,如果这个时候传入的是日本110v类,那还是不能达到目的,那我们就要考虑用中国220v做饭类来替代了,于是想到新建一个继承了日本110v的实现类
public class ElectricCooker {
private JP110VInterface jp110VInterface;
public ElectricCooker(JP110VInterface jp110VInterface) {
this.jp110VInterface = jp110VInterface;
}
public void cook() {
jp110VInterface.connect();
System.out.println("做饭了结束了..");
}
}
日本110v做饭实现类,实际里面是中国220v做饭类
public class PowerAdaptor implements JP110VInterface {
private final CN220VInterface cn220VInterface;
public PowerAdaptor(CN220VInterface cn220VInterface) {
this.cn220VInterface = cn220VInterface;
}
@Override
public void connect() {
cn220VInterface.connect();
}
}
测试运行
public static void main(String[] args) {
JP110VInterface jp110VInterface = new JP110VInterfaceImpl();
CN220VInterface cn220VInterface = new CN220VInterfaceImpl();
// jp110VInterface.connect();
// cn220VInterface.connect();
PowerAdaptor powerAdaptor = new PowerAdaptor(cn220VInterface);
ElectricCooker electricCooker = new ElectricCooker(powerAdaptor);
electricCooker.cook();
}
可以看到,日本110做饭类变成了中国220v做饭类,实现类适配的效果,这就是适配模式可以达到的目的