设计模式8-适配器模式

package DesignPattern;

public class AdapterPattern {
    //对象适配器模式
    //要点:在所需目标类的接口下,包装所需适配类的接口,以便在目标接口处使用

    public interface Duck{
        void quack();
        void fly();
    }
    public static class MallardDuck implements Duck{
        @Override
        public void quack() {
            System.out.println("Quack");
        }

        @Override
        public void fly() {
            System.out.println("I'm flying");
        }
    }

    public interface Turkey{
        void gobble();
        void fly();
    }

    public static class WildTurkey implements Turkey{
        @Override
        public void gobble() {
            System.out.println("Gobble gobble");
        }

        @Override
        public void fly() {
            System.out.println("I'm flying a short distance");
        }
    }

    public static class TurkeyAdapter implements Duck{
        Turkey turkey;
        TurkeyAdapter(Turkey turkey){
            this.turkey=turkey;
        }
        @Override
        public void quack() {
            turkey.gobble();
        }

        @Override
        public void fly() {
            turkey.fly();
        }
    }

    public static void main(String[] args) {
        MallardDuck duck = new MallardDuck();
        WildTurkey turkey = new WildTurkey();
        Duck turkeyAdapter = new TurkeyAdapter(turkey);
        System.out.println("turkey says");
        turkey.gobble();
        turkey.fly();
        System.out.println("\nThe Duck says");
        duck.quack();
        duck.fly();
        System.out.println("\nThe TurkeyAdapter");
        turkeyAdapter.quack();
        turkeyAdapter.fly();
    }
}

posted @ 2019-04-17 16:27  Fake_coder  阅读(88)  评论(0编辑  收藏  举报