public class AC220V {
public int output(){
return 220;
}
}
5V Adapter
AC220V ac220 ;
public DC5VAdapterForObject(AC220V ac220) {
// TODO Auto-generated constructor stub
this.ac220 = ac220;
}
public int input(){
return ac220.output();
}
public int output5V(){
return ac220.output()/4;
}
}
test
public static void main(String[] args) {
AC220V ac220 = new AC220V();
DC5VAdapterForObject adapter = new DC5VAdapterForObject(ac220);
System.out.println("input:" + adapter.input());
System.out.println("output:" + adapter.output5V());
}
类适配器
简介
* 通过继承的方式, 为方法提供适配;
CODE
介绍
* 220V输入输出, 转换为220V输入,5V输出;
* 220V和对象适配器通用;
5V Adapter
public class DC5VAdapterForClass extends AC220V{
public int output5V(){
return output()/4;
}
public int input(){
return output();
}
}
test
public static void main(String[] args) {
DC5VAdapterForClass adapter = new DC5VAdapterForClass();
System.out.println("input:" + adapter.input());
System.out.println("output:" + adapter.output5V());
}
public abstract class PowerAdapter {
AC220V ac220;
public PowerAdapter(AC220V ac220) {
// TODO Auto-generated constructor stub
this.ac220 = ac220;
}
//只需面向抽象实现;
public abstract int output5V();
public int output220V(){
return 220;
}
}
5V adapter
public class DC5VAdapterForInterface extends PowerAdapter{
public DC5VAdapterForInterface(AC220V ac220) {
super(ac220);
}
//钩子
public static boolean support(Object powerAdapter){
return powerAdapter instanceof DC5VAdapterForInterface;
}
@Override
public int output5V() {
return super.output220V()/4;
}
}
test
public static void main(String[] args) {
PowerAdapter adapter = new DC5VAdapterForInterface(new AC220V());
if(DC5VAdapterForInterface.support(adapter)){
System.out.println(adapter.output5V());
}
}