我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在行为类设计模式中,状态模式和策略模式是亲兄弟,两者非常相似,我们先看看两者的通用类图,把两者放在一起比较一下,如图所示:

二者是不是很像,光看这个 UML 我们看不出什么端倪来,接下来我们结合例子,来对比一下二者之间的区别。下面的例子是《Head First 设计模式》中的例子。


策略模式

策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

某公司开发了一个鸭子游戏,里面会出现各种特点的鸭子:绿头鸭,红头鸭,橡皮鸭……用程序如何实现这些鸭子? 看到这个场景问题,很容易想到,先定义一个所有鸭子的超类Duck,把公共方法和属性封装进去。例如,鸭子都会游泳,鸭子都有各自的外貌:

实例

public abstract class Duck {
    public void swim(){
        System.out.println("All duck can swim!");
    }
    public abstract void display();
    public void fly(){
        System.out.println("飞~~~");
    }
    public void quack(){
        System.out.println("呱呱呱~");
    }
}
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为1000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设网站改版百度优化、名注册、主机空间、手机网站建设公众号开发小程序制作、网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线: 13820372851,我们会详细为你一一解答你心中的疑难。项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13820372851

上班时间

周一到周五

公司电话

022-26262675

二维码
线
在线留言