设计模式

使用继承导致的缺点

    1.     代码在多个子类中重复    

    2.    运行时的行为不容易改变

    3.    很难知道所有子类的全部行为

    4.    父类一旦改变所有子类都会受到牵连

    … …

 

鸭子游戏

       如何设设计?

    1.      设计Duck基类

        把静态属性放置基类中(就是鸭子共同的属性,不会发生变化的,比如嘴巴,脚… … )

    abstract class Duck

    2.    抽取出需要变化的代码

        比如动态行为(比如:如何叫,如何飞),不同的鸭子有不同的行为

interface class fly

    这样做的好处 : 

    1.      把所有不需要变化的和需要变化的分离.

        不需要变化的代码写成abstract类,需要变化的写成interface接口.            

public abstract class Duck {
       private Stirng name; // 不会变化的代码
       private FlyBehavior flyBehavior; // FlyBehavior是一个接口
       public void fly(){
              flyBehavior.fly(); // 委托给行为类
       }
       如何动态的设定行为呢?
       public void setFlyBehavior(FlyBehavior fb) {
              this. flyBehavior = fb; // 这样就可以动态的设定行为了
       }
}


你可能感兴趣的:(设计模式)