一,概述
状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。
状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。
意图:允许一个对象在其内部状态改变时改变它的行为
适用场景:
1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。
2.一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。
二,示例
题目:根据不同时间段,显示不同时间段的精神状态
1)面向过程版本
2)工作状态分类版本
缺点:WriteProgram 中有太多的判断,如果更改时间段可能要改好几个,而且改错的风险极大
3)状态模式
主要解决的问题:当控制一个对象状态转移的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中。可以把复杂的逻辑简化。
优点:将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。
消除庞大的条件分支语句。
三,状态模式模板
分享到:
相关推荐
java设计模式之-状态模式-实现
JAVA-设计模式-行为型模式-状态模式
设计模式专题之(二十一)状态模式---设计模式状态模式示例代码(python--c++)
JAVA设计模式--程序设计--反射--注解--泛型
26种设计模式 ------------------- 26种设计模式 -------------------
(完整word)设计模式-软件体系结构-实验6-中南大学-软件学院.pdf(完整word)设计模式-软件体系结构-实验6-中南大学-软件学院.pdf(完整word)设计模式-软件体系结构-实验6-中南大学-软件学院.pdf(完整word)设计模式-软件...
博客地址:https://blog.csdn.net/xiaoluo5238/article/details/104592927 完整的代码,就是包名需要注意一下
c++设计模式-行为型模式-状态模式;qt工程;c++简单源码; 状态(State)模式的定义:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。
java设计模式之状态模式入门
设计模式精解-GoF-23种设计模式解析--附C++源代码,帮助理解!
运用到的设计模式有备忘录模式,迭代器模式,简单工厂模式,状态模式,模版方法模式,单例模式。 资源包含项目文件(eclipse)以及系统说明(docx文件),系统说明中说明了为什么要使用该模式,使用该模式有什么好处...
设计模式11-行为模式-责任链、命令模式 设计模式12-解释器模式 设计模式13-迭代器模式 设计模式14-中介者模式、备忘录模式 设计模式15-观察者模式、状态模式 设计模式16-策略模式、模板方法、访问者 此PPT实例便于...
设计模式沉思录---高清版.pdf
NULL 博文链接:https://zhangyan19870108.iteye.com/blog/1992409
本系统使用Java代码实现,是设计模式的期末课程设计,共使用了5种设计模式,分别是**原型模式、单例模式、抽象工厂模式、代理模式、建造者模式。*,希望对各位有帮助
c++设计模式-结构型模式-组合模式;qt工程;c++简单源码; 组合(Composite Pattern)模式的定义:有时又叫作整体-部分(Part-Whole)模式,它是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系...
西南科技大学软件设计模式与重构大作业-心算大师游戏(高分作业)
------ 设计模式之:迷你手册 ------(图较多,请多些耐心)
HeadFirst 设计模式学习笔记3--装饰模式 Demo http://blog.csdn.net/laszloyu/archive/2010/05/12/5582561.aspx
c++设计模式-行为型模式-策略模式;qt工程;c++简单源码; 策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于...