适配器分为类适配器和对象适配器。类适配器是对类的适配,Adapter继承那个类或者接口也可以。对象适配器是对具体对象的适配,adapter 含有那个类的成员变量。但不管哪个适配器 最终Adapter 实现哪个接口,就把它看成那个接口的东西,比如本例都是实现36V的接口,就都可以把那个Adapter类看成36V的接口来用~
还有第三类适配器,我一直思考的设计模式即设计思想,那么 适配器的最终想法是对 一个接口或者具体类的适配成另一个接口 ,那么如果被适配的接口和适配成的接口是同一个接口还算是适配器模式吗? 答案是 算 ~ 这个就相当于一个Adapter类实现了一个接口,方法里面添加了一些代码,完善了接口类~ 或者Adapter里面含有一个接口的成员变量,然后再方法里面调用 这两种情况都不算多
no1类适配器
/** * 220V电压 */ public class HighV220Impl { public void showPower220V() { System.out.println("220V电压"); } } /** * 36V电压 适配的那个 */ public interface LowV36 { void showPower36V(); }/** * 36V电压接口实现类 */ public class LowV36Impl implements LowV36{
@Override public void showPower36V() { System.out.println("36V电压"); } }
public class Phone { public void change(LowV36 lowV36){ lowV36.showPower36V(); System.out.println("手机正在充电"); } }public class PowerAdapter extends HighV220Impl implements LowV36{ @Override public void showPower36V() { super.showPower220V(); System.out.println("适配一下子"); System.out.println("36V电压"); }
public class Test { public static void main(String[] args){ //假设现有一个手机的对象,手机对象需要充电 36V电压 Phone phone=new Phone(); //设配器出场 PowerAdapter powerAdapter=new PowerAdapter(); //手机充电 phone.change(powerAdapter); } }
运行结果:
220V电压 适配一下子 36V电压 手机正在充电
no2 对象适配器
/** * 220V 电压 被适配的那个 */ public interface HighV220 { void showPower220V(); }
/** * 36V电压 适配的那个 */ public interface LowV36 { void showPower36V(); }
/** * 220V电压接口实现类 */ public class HighV220Impl implements HighV220{ @Override public void showPower220V() { System.out.println("220V电压"); } }
/** * 36V电压接口实现类 */ public class LowV36Impl implements LowV36{
@Override public void showPower36V() { System.out.println("36V电压"); } }
public class PowerAdapter implements LowV36{ HighV220 highV220; public void getPower(HighV220 highV220){ this.highV220=highV220; } @Override public void showPower36V() {
highV220.showPower220V(); System.out.println("适配一下子"); System.out.println("36V电压"); } } /** * 手机 需要36V电压 */ public class Phone { public void change(LowV36 lowV36){ lowV36.showPower36V(); System.out.println("手机正在充电"); } }
public class Test { public static void main(String[] args){ //假设现有一个手机的对象,手机对象需要充电 36V电压 Phone phone=new Phone(); //假设现在有220V电压 HighV220 highV220=new HighV220Impl();
//设配器出场 PowerAdapter powerAdapter=new PowerAdapter(); //适配器得到220V电压 powerAdapter.getPower(highV220); //手机充电 phone.change(powerAdapter);
} }
运行结果:
220V电压 适配一下子 36V电压 手机正在充电
--------------------- 作者:萌懵 来源: 原文:https://blog.csdn.net/chenshuaiforwork/article/details/90752807 版权声明:本文为博主原创文章,转载请附上博文链接!