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

来源:互联网 发布:求非线性方程的算法 编辑:程序博客网 时间:2024/06/08 20:00

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

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

1.类适配器

Usb.javainterface Usb{    void chargeWithUsb();    }
Ps2.javainterface Ps2{    void chargeWithPs2();    }
Phone.javapublic 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.javapublic class Test{    public static void main( String[] args){    Ps2 gamer = new Adapter();    gamer.chargeWithPs2();        }        //输出 charging (usb)    }

.
2.对象适配器

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

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

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

.
.
3.接口适配器

A.javainterface A{    void a();    void b();    void c();    void d();    void e();
Adapter.javapublic abstract class Adapter implements A {    //必须实现所有接口方法,必须有方法体{},不一定要内容    public void a(){};    public void b(){};    public void c(){};    public void d(){};    public void e(){};    //设置为抽象类,可以避免被实例化.抽象类只为继承.
Example.javapublic class Example extends Adapter{    @Override    public void a(){        System.out.println("excute a");        }    @Override    public void c()        System.out.println("excute c");        }    //有选择的实现接口方法,而不是全部实现.
原创粉丝点击