美文网首页
设计模式之-适配器模式

设计模式之-适配器模式

作者: 子龙神 | 来源:发表于2018-05-28 09:32 被阅读0次

    适配器模式:其实就是把一个实例类转换成另外的一个接口的类型的,适配器让原本接口不兼容的类可以合作无间。

    适配器是使用组合和继承的方式,得到兼容的功能.耦合性还是比较高的.

    请看例子:

    /**狼的接口

    * @author zhangke

    *

    */

    interface Wolf{

    void say();

    void run();

    }

    //狼的具体实现类

    class WhiteWolf implements Wolf{

    @Override

    public void say() {

    System.out.println("wowowo,这个狼在叫唤");

    }

    @Override

    public void run() {

    System.out.println("跳一次是60米");

    }

    }

    /**人的接口

    * @author zhangke

    *

    */

    interface Person{

    void say();

    void run();

    }

    //黄种人的具体

    class YellowPerson implements Person{

    @Override

    public void say() {

    System.out.println("黄种人,主要分布在亚洲的,我们就是黄种人");

    }

    @Override

    public void run() {

    System.out.println("跳一次是10米");

    }

    }

    对已经存在的人和狼来说他们之间没有任何的关系,那么问题来了,狼人怎么办?他既是狼又是人,身兼两者的特点,但是首先,他是个人.

    所以我们要做的就是把这个人看起来像狼就行了.

    我们需要实现狼的接口

    我们来制造一个狼人出来,看着像人,又有狼的特性

    //一个狼人的具体实现类

    class WolfPerson implements Wolf{

    //需要得到一个狼人需要一个具体的人作为参数传递进来的.

    private Person YellowPerson;

    public WolfPerson(Person yellowPerson) {

    super();

    YellowPerson = yellowPerson;

    }

    @Override

    public void say() {

    //还是会说人话的

    yellowPerson.say();

    }

    @Override

    public void run() {

    for (int i = 0; i < 5; i++) {

    //狼人跳一次相当于人跳5次了

    yellowPerson.run();

    }

    }

    测试方法:

    public static void main(String[] args) {

    //白狼

    WhiteWolf whiteWolf = new WhiteWolf();

    whiteWolf.say();

    whiteWolf.run();

    System.out.println("~~~~~");

    //黄种人

    YellowPerson person = new YellowPerson();

    person.say();

    person.run();

    System.out.println("~~~~~");

    //狼人

    WolfPerson wolfPerson = new WolfPerson(person);

    wolfPerson.say();

    wolfPerson.run();

    }

    其实这个模式还是特别简单的,也没有什么好说的了.再见

    相关文章

      网友评论

          本文标题:设计模式之-适配器模式

          本文链接:https://www.haomeiwen.com/subject/fxywjftx.html