美文网首页
structure:适配器模式 (Adapter Pattern

structure:适配器模式 (Adapter Pattern

作者: 柳源居士 | 来源:发表于2019-03-07 23:18 被阅读0次

定义:
将一个类的接口,转换成客户期望的另一个接口。
适配器让原本不兼容的类可以相互合作。
适配器可以是双向的。
如果目标接口比较多,则需要实现很多的转换工作。
通常一个适配器只包装一个被适配者,但如果需要包装多个被适配者,则变成了外观模式。

实现思路:
适配器实现目标接口,内部包含一个被适配者的引用。


实现类图.png

实现:

package Adapter;

public interface Chick {
    public String shortFly();
    public String guuguu();
}


package Adapter;

public class ChickAdapter implements Duck {
    Chick chick;

    public ChickAdapter(Chick chick) {
        this.chick = chick;
    }

    @Override
    public String fly() {
       String fly=new String();
       for(int i=0;i<5;i++){
           fly=fly+ chick.shortFly();
       }
       System.out.println(fly);
       return fly;
    }

    @Override
    public String gaga() {
        System.out.println(chick.guuguu());
        return chick.guuguu();
    }
}


package Adapter;

public interface Duck {
    public String fly();
    public String gaga();
}

package Adapter;

public class DuckAdapter implements Chick {
    Duck duck;

    public DuckAdapter(Duck duck) {
        this.duck = duck;
    }

    @Override
    public String shortFly() {
       String fly=new String();
       fly=duck.fly().substring(0,duck.fly().length()/2);
       System.out.println(fly);
       return fly;
    }

    @Override
    public String guuguu() {
        System.out.println(duck.gaga());
        return duck.gaga();
    }
}

package Adapter;

public class TestAdapter {
    public static void test(){
        ChickAdapter chickAdapter=new ChickAdapter(new WildChick());
        chickAdapter.fly();
        chickAdapter.gaga();

    }
}

package Adapter;

public class WildChick implements Chick {
    @Override
    public String shortFly() {
        return " can fly a short distance ";
    }

    @Override
    public String guuguu() {
        return "guu guu guu!";
    }
}

package Adapter;

public class WildDuck implements Duck {

    @Override
    public String fly() {
        return "duck can fly";
    }

    @Override
    public String gaga() {
        return "ga ga ga!";
    }
}

相关文章

网友评论

      本文标题:structure:适配器模式 (Adapter Pattern

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