3.Java设计模式-->适配器模式

xiaoxiao2021-02-28  92

设计模式重点还是思想,针对问题的具体代码肯定会有变化.

现有,Usb插孔和Ps2插头一个.

1.类适配器

Usb.java interface Usb{ void chargeWithUsb(); } Ps2.java interface Ps2{ void chargeWithPs2(); } Phone.java public class Phone implements Usb{ @Override public void chargeWithUsb(){ System.out.println(" charging (usb) "); } } Adapter.java public class Adapter extends Phone implements Ps2{ //继承是为了调用 Phone 的方法,Cuz java不允许方法的嵌套. @Override public void chargeWithPs2(){ chargeWithUsb(); } //调用chargeWithPs2(),但是实际执行的是chargeWithUsb() } Test.java public class Test{ public static void main( String[] args){ Ps2 gamer = new Adapter(); gamer.chargeWithPs2(); } //输出 charging (usb) }

. 2.对象适配器

Usb.java interface Usb{ void chargeWithUsb(): } Ps2.java interface Ps2{ void chargeWithPs2(); } Phone.java public class Phone implements Usb{ @Override public void chargeWithUsb(){ System.out.println("charging (usb)"); } }

...................上面代码与类适配器相同

Adapter.java public class Adapter implements Ps2{ private Usb usb; public Adapter(Usb usb){ this.usb = usb }//初始化类成员变量usb @Override public void chargeWithPs2(){ usb.chargeWithUsb(); } } //通过获得Usb实例来调用其方法. Test.java public class Test{ public static void main( String[] args ){ Ps2 gamer = new Adapter( new Usb() ); gamer.chargeWithPs2(); } }

. . 3.接口适配器

A.java interface A{ void a(); void b(); void c(); void d(); void e(); Adapter.java public abstract class Adapter implements A { //必须实现所有接口方法,必须有方法体{},不一定要内容 public void a(){}; public void b(){}; public void c(){}; public void d(){}; public void e(){}; //设置为抽象类,可以避免被实例化.抽象类只为继承. Example.java public class Example extends Adapter{ @Override public void a(){ System.out.println("excute a"); } @Override public void c() System.out.println("excute c"); } //有选择的实现接口方法,而不是全部实现.
转载请注明原文地址: https://www.6miu.com/read-29499.html

最新回复(0)