Java设计模式之状态模式
发布日期:2021-06-30 16:27:02
浏览次数:3
分类:技术文章
本文共 1425 字,大约阅读时间需要 4 分钟。
状态模式(state)
概念:
这个模式允许你可以在运行时很容易地根据自身内部的状态改变对象的行为适用:
1.当一个对象的转换条件表达式过于复杂时,通常这个状态由一个或者多个枚举表示,通常有多个操作包含这一相同的的条件结构,state模式将一个条件分支放到一个类中,这使得你可以根据对象自身的情况将对象的状态作为对象,这一对象不依赖于其他对象而独立变化,把状态的判断逻辑放到表示不同状态的一系列类中。 2.一个对象的行为取决于它的状态,并且它必须在运行时根据状态立即改变行为。代码示例:
/** * 状态抽象类,封装与Person的一个特定状态相关的行为 */public abstract class State { public abstract void smile(); public abstract void cry(); public abstract void say();}
/** * 具体状态类,每一个子类实现一个与Person的一个状态相关的行为 */public class BadState extends State{ public void smile() { System.out.println("悲伤的笑..."); } public void cry() { System.out.println("悲伤的哭..."); } public void say() { System.out.println("悲伤的说..."); }}
/** * 具体状态类,每一个子类实现一个与Person的一个状态相关的行为 */public class HappyState extends State{ public void smile() { System.out.println("高兴的笑..."); } public void cry() { System.out.println("高兴的哭..."); } public void say() { System.out.println("高兴的说..."); }}
/** * 维护一个State子类的实例,这个实例定义当前的状态 */public class Person { private State state = new HappyState(); // 状态 public void smile(){ state.smile(); } public void cry(){ state.cry(); } public void say(){ state.say(); }}
/** * 状态模式的测试 * 根据不同的状态执行不同的动作 */public class Test { public static void main(String[] args) { Person p = new Person(); p.smile(); p.say(); p.cry(); }}
转载地址:https://kevin.blog.csdn.net/article/details/78007026 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月12日 07时46分20秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Netty与网络协议资料整理
2019-04-30
golang实现大数据量文件的排序
2019-04-30
golang中的time包
2019-04-30
2019NOIP D4题 加工领奖
2019-04-30
2021.5.19 JS高级第二天
2019-04-30
啊沙发沙发
2019-04-30
SpringBoot内置Tomcat配置参数
2019-04-30
局部加权回归
2019-04-30
Mysql 入门
2019-04-30
ubuntu 快捷键
2019-04-30
linux 根目录下文件夹分析
2019-04-30
linux 查看分区和文件大小
2019-04-30
Not using PCAP_FRAMES 解释(snort中)
2019-04-30
技术转管理?这些“坑”你要绕道走
2019-04-30
领域驱动设计(DDD)前夜:面向对象思想
2019-04-30
Camera驱动调试小记
2019-04-30
对于中断函数返回值的分析
2019-04-30
四线触摸屏原理
2019-04-30
C/C++如何返回一个数组/指针
2019-04-30
腾讯AI语音识别API踩坑记录
2019-04-30