策略模式java:JAVA设计模式解读的一: 策略模式

    当我们掌握了Java语法当我们了解了面向对象封装、继承、多态等特性当我们可以用Swing、Servlet、JSP技术构建桌面以及Web应用不意味着我们可以写出面向对象不意味着我们可以很好实现代码复用弹性维护不意味着我们可以实现在维护、扩展基础上代码复用把刀可以使你制敌于无形而于江湖扬名也可以只是把利刃而使你切菜平静Java就是这把刀威力取决于你使用方式当我们陷入无尽无止重复代码泥沼当我们面临牵发而动全身维护恶梦, 你应该想起“设计模式”这个行动秘笈面向对象精义看似平淡其实要经过艰苦实战才能成功而构造OO系统隐含经验于是被前人搜集而成并冠以“设计模式”的名我们应该在编码行动就携带以它接下来让我们步“ 4人组”先行者的后用中国文字、用实际案例领略模式于我们代码焕然改变:

    设计模式解读的: 策略模式

    1. 模式定义
   
        把会变化内容取出并封装起来以便以后可以轻易地改动或扩充部分而不影响不需要变化其他部分;

    2. 问题缘起

    当涉及至代码维护时为了复用目而使用继承结局并不完美对父类修改会影响到子类型在超类中增加思路方法会导致子类型有该思路方法甚至连那些不该具备该思路方法子类型也无法免除举例个鸭子类型:

public abstract Duck

{
        //所有鸭子均会叫以及游泳所以父类中处理这部分代码
        public void quack

        {
            .out.prln("Quack");
         }
       
        public void swim

        {
            .out.prln("All ducks float, even decoys.");       
         }
       
        //每种鸭子外观是区别所以父类中该思路方法是抽象由子类型自己完成
        public abstract void display;

}

public MallardDuck extends Duck

{
        //野鸭外观显示为绿头
        public void display

        {
            .out.prln("Green head.");
         }

 }

    public RedHeadDuck extends Duck {
        //红头鸭显示为红头
        public void display {
            .out.prln("Red head.");
        }
    }

    public RubberDuck extends Duck {
        //橡皮鸭叫声为吱吱叫所以重写父类以改写行为
        public void quack {
            .out.prln("Squeak");
        }

        //橡皮鸭显示为黄头
        public void display {
            .out.prln("Yellow head.");
        }
    }

    上述代码实现得非常好现在我们如果给Duck.java中加入fly思路方法那么在子类型中均有了该思路方法于是我们看到了 会飞橡皮鸭子你看过吗?当然我们可以在子类中通过空实现重写该思路方法以解决该思路方法对于子类型影响但是父类中再增加其它思路方法呢?


="xspace-totlerecord">6="xspace-totlepages">1/6="xspace-current">123456>
Tags:  策略游戏 组策略 .net策略模式 策略模式java

延伸阅读

最新评论

发表评论