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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java设计模式之策略模式
下一篇:Java设计模式之代理模式

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年05月03日 01时53分45秒