美文网首页
状态模式

状态模式

作者: 老九君 | 来源:发表于2019-08-13 16:32 被阅读0次

    状态模式简述

          在很多情况下我们对象的行为依赖于它的一个或者多个变化的属性,这些可变的属性我们称之为状态,也就是说行为依赖状态,即当该对象因为在外部的互动而导致他的状态发生变化,从而它的行为也会做出相应的变化。对于这种情况,我们是不能用行为来控制状态的变化,而应该站在状态的角度来思考行为,即是什么状态就要做出什么样的行为。这个就是状态模式。

    先来看这样一个示例。

    下面使用策略模式重写上面的例子

    优缺点及适用情况

    优点:

    封装了转换规则

    枚举可能的状态,在枚举状态之前需要确定状态种类

    将所有与某个状态有关的行为放到一个类中,并且可以方便地增加新的状态,只需要改变对象状态即可改变对象的行为

    允许状态转换逻辑与状态对象合成一体,而不是某一个巨大的条件语句块

    可以让多个环境对象共享一个状态对象,从而减少系统中对象的个数

    缺点:

    状态模式的使用必然会增加系统类和对象的个数

    状态模式的结构与实现都较为复杂,如果使用不当将导致程序结构和代码的混乱

    状态模式对”开闭原则”的支持并不太好,对于可以切换状态的状态模式,增加新的状态类需要修改那些负责状态转换的源代码,否则无法切换到新增状态,而且修改某个状态类的行为也需修改对应类的源代码

    适用情况:

    在行为受状态约束的时,且状态不超过5个

    老九学堂出品,转载请私信哦

    对于文章内容有不理解的可以添加老九君个人QQ:614940318,请备注来自简书

    老九学堂免费C、C++、Java课程地址:

    https://study.163.com/courses-search?keyword=%E8%80%81%E4%B9%9D%E5%AD%A6%E5%A0%82

    相关文章

      网友评论

          本文标题:状态模式

          本文链接:https://www.haomeiwen.com/subject/vfebjctx.html