设计模式之状态模式总结篇-创新互联

状态模式总结篇

大通网站建设公司成都创新互联,大通网站设计制作,有大型网站制作公司丰富经验。已为大通千余家提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的大通做网站的公司定做!

状态模式总结篇,我们将从以下几个方面对状态模式进行总结。

设计模式之状态模式总结篇

状态模式出现的意图是什么?

通过对象内部状态发生改变进而来改变对象的行为,对象看起来好像是被修改了一样。如,没有糖果的时候(是一个状态),糖果机就不能运行了,有糖果之后(另一个状态),投币就可以出糖果了。

本文出处凯哥Java(kaigejava)讲《23种设计模》系列教程种的《状态模式总结篇》

凯哥公众号:凯哥Java

凯哥个人博客:www.kaigejava.com

主要解决的问题是什么?

对象的行为依赖于对象的状态变化(属性变更),并且根据属性值(状态)的改变而改变相关的行为。如,出不出糖果这个行为受糖果机里面有没有糖果和有没有投币这两个状态影响而改变的。

什么时候或者是什么场景下使用状态模式?

在我们的程序代码中包含和很多与对象状态有关的条件语句(如if……else……或者是switch等)的时候,就可以使用状态模式

如何实现状态模式?

将代码中的各种具体的状态抽象到一个类中。这样就有了状态类抽象对象。

使用状态模式的关键点是什么?

需要和命令模式进行区分。命令模式的接口中,通常情况下只有一个方法,而状态模式的接口中有一个或者多个方法。还有一个不同的地方就是,状态模式的时候其实现类的方法一般是返回一个值或者是改变变量的值的。这是因为,状态模式一般和对象的状态有关。

状态模式的优缺点:

优点:

1:对状态转换规则进行了封装;

2:可以使用枚举类,枚举出所有可能的状态。但是需要在枚举状态之前确定状态的种类;

3:扩展性好。将所有与某个或者某些状态有关的行为放到了一个类对象中,这样方便管理,并且可以方便的新增状态,只需要改变对象状态就可以实现改变对象行为了;

4:代码简洁好维护。状态模式允许状态转换逻辑和状态对象合为一体,而不是一个巨大的条件语句块;

5:可以让多个不同的环境对象共享一个状态的对象,这样减少系统中对象的数量。

缺点:

1:增加对象和系统类的个数;

2:结构与实现比较复杂,如果使用不当,可能会造成程序结构和代码给人感觉很混乱的;

3:对开闭原则支持不好。

使用状态模式需要注意事项:

在行为受到状态约束的时候,使用状态模式,而且需要注意的是:状态最好不要超过5个

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


分享名称:设计模式之状态模式总结篇-创新互联
文章转载:http://ybzwz.com/article/dsedjj.html