适配器模式
- 别名为包装器,电源适配器
- 属于结构型模式
- 分为三类:类适配器模式、对象适配器模式、接口适配器模式
public class Voltage220V {
public int output220V(){
System.out.println("输出220v的电压");
int v = 220;
return v;
}
}
public interface Voltage5V {
public int output5V();
}
public class adaptor extends Voltage220V implements Voltage5V {
@Override
public int output5V() {
int v = output220V();
int vv = v/44;
return vv;
}
}
public class Phone {
public void charging(Voltage5V voltage5V){
if(voltage5V.output5V()==5){
System.out.println("正常5v充电");
}
}
}
public class client {
public static void main(String[] args) {
Phone phone = new Phone();
phone.charging(new adaptor());
}
}
/*类适配器 被适配的类 适配的接口 以及 转换器,手机和适配的接口互相依赖,所谓依赖
* 就是方法中用到它,最后在客户端new手机和NEW 转换器
* 转换器继承了被适配的类,得到里面的东西,然后更改,实现接口完成客户端需要的任务
* 总的来说很巧妙*/
public class adaptor implements Voltage5V {
/*持有的关系*/
Voltage220V voltage220V = new Voltage220V();
@Override
public int output5V() {
int v= voltage220V.output220V();
int vv=v/44;
return vv;
}
}
//变成聚合关系,用来解耦
public class Client {
public static void main(String[] args) {
V220 v220 = new V220();
Adapter adapter = new Adapter() {
@Override
public int output() {
int v = v220.output220();
int vv = v / 44;
return vv;
}
};
System.out.println("输出电压为"+adapter);
}
}
//用抽象方法实现接口,为每一个方法提供一个空方法,那么该抽象方法的子类可以选择性覆盖父类的某些方法来实现需求
//client可以直接new一个抽象类,用匿名内部类的方式,或者新建一个具体的实现类,都行