Java设计模式之状态模式
发布日期:2021-06-30 16:27:02
浏览次数:2
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年05月03日 01时53分45秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
对于时间复杂度的通俗理解
2019-04-30
如何输入多组数据并输出每组数据的和?
2019-04-30
基于CentOS 7的Linux常用命令行命令
2019-04-30
行阶梯型矩阵
2019-04-30
信号量机制
2019-04-30
临界资源与临界区
2019-04-30
matlab中uint8,double,im2double和im2uint8的区别
2019-04-30
数字图像处理总复习
2019-04-30
图像去噪(包含修正的阿尔法均值滤波及通用滤波方法代码)
2019-04-30
SVM进行人脸检测
2019-04-30
C++学习笔记
2019-04-30
图像处理学习笔记
2019-04-30
Machine Learning Onramp on MATLAB 学习笔记
2019-04-30
Machine Learning with MATLAB 1.1 to 2.2
2019-04-30
Learning DSP with MATLAB
2019-04-30
用MATLAB实现m序列的生成(MATLAB 2021a适用)
2019-04-30
MATLAB函数备忘(定期更新)
2019-04-30
13行MATLAB代码实现网络爬虫 爬取NASA画廊星图
2019-04-30
MATLAB指定路径保存图片方法
2019-04-30
Python一键获取微信推送封面图
2019-04-30