chapter07_随遇而安——适配器模式和外观模式

2019-01-07  本文已影响0人  米都都
__实现了调用者和被适配者的解耦__

(3) 示例

Duck.java

    public interface Duck {

        void quack();

        void fly();
    }

Turkey.java

    public interface Turkey {

        void gobble();

        void fly();
    }

TurkeyAdapter.java

    public class TurkeyAdapter implements Duck {

        private Turkey turkey;

        public TurkeyAdapter(Turkey turkey) {

            this.turkey = turkey;
        }

        public void quack() {

            turkey.gobble();
        }

        public void fly() {

            for (int i = 0; i < 5; i++) {
                turkey.fly();
            }
        }
    }

Turkey和Duck是两个不同的接口, TurkeyAdapter构造器注入一个turkey对象, 将Duck的行为映射成内部turkey对象的行为
也就是说, 尽量不要在某个方法中出现 

    this.inner.getA().getX()

这种链式调用

(3) 完全遵循"最少知识原则"很可能会导致过度封装(为了防止出现(2)中的情况又包装了几个类), 造成复杂度和开发时间的增加, 所以应__在抽象和速度之间折中__
上一篇下一篇

猜你喜欢

热点阅读