中专网站建设与数据管理是什么,wordpress主题模板文件下载,怎么对自己的网页进行修改,做网站广告词目录
一. 概述
二. 主要角色
三. 代码示例
四. 优缺点
优点#xff1a;
缺点#xff1a;
五. 常见应用场景 一. 概述 状态模式是一种行为设计模式#xff0c;它允许一个对象在其内部状态改变时改变它的行为。对象看起来好像修改了它的类。状态模式把所有的与一个特定…目录
一. 概述
二. 主要角色
三. 代码示例
四. 优缺点
优点
缺点
五. 常见应用场景 一. 概述 状态模式是一种行为设计模式它允许一个对象在其内部状态改变时改变它的行为。对象看起来好像修改了它的类。状态模式把所有的与一个特定的状态相关的行为放到一个类中并且将请求委托给当前状态对象来执行。 在状态模式中我们创建表示各种状态的对象和一个行为随状态对象改变而改变的Context对象。
二. 主要角色
状态模式主要包含三个角色 Context上下文维护一个指向当前状态对象的引用这个引用指向的状态对象定义了在特定时间对象将如何响应请求。 State状态接口定义一个接口以封装与Context的某个状态相关的行为。 Concrete State具体状态实现State接口并且包含与特定状态相关的行为。 三. 代码示例
以啊坤身体状态为例健康和骨折的阿坤 1. 健康的阿坤会唱、跳、rap。 2. 骨折的阿坤唱、rap。 代码示例
定义状态接口 package com.demo.status;/*** 文件名State* 创建者* 创建时间2024-09-08* 描述定义状态接口*/
public interface State {//定义行为方法void action();
}定义状态接口的实现类1健康的阿坤 package com.demo.status;/*** 文件名HealthState* 创建者* 创建时间2024-09-08* 描述状态接口实现类* 健康状态下的行为唱、跳、rap*/
public class HealthState implements State{Overridepublic void action() {System.out.println(实习一坤年的健康练习生会唱、跳、rap);}
}定义状态接口的实现类2骨折的阿坤 package com.demo.status;/*** 文件名FractureState* 创建者* 创建时间2024-09-08* 描述状态接口实现类* 骨折状态下的行为: 只能唱、rap*/
public class FractureState implements State{Overridepublic void action() {System.out.println(实习一坤年的骨折练习生只会唱和rap);}
}定义环境类也就是上下文类 package com.demo.status;/*** 文件名Context* 创建者* 创建时间2024-09-08* 描述环境类*/
public class Context {//持有状态接口的引用private State state;public Context(State state) {this.state state;}public void setState(State state) {this.state state;}public void request() {state.action(); // 委托给当前状态处理请求}
}测试类 package com.demo.status;/*** 文件名Main* 创建者* 创建时间2024-09-08* 描述测试类*/
public class Main {public static void main(String[] args) {//创建实现类对象健康的啊坤HealthState healthState new HealthState();//创建实现类对象骨折的啊坤FractureState fractureState new FractureState();//通过给环境传入不同的对象执行不同的方法(传入一个健康的阿坤)Context healthContext new Context(healthState);healthContext.request();//通过给环境传入不同的对象执行不同的方法(传入一个骨折的阿坤)Context fractureContext new Context(fractureState);fractureContext.request();}
}测试结果
四. 优缺点 优点 封装性好将状态转换逻辑封装在状态类中减少了Context类的复杂性。扩展性好可以方便地添加新的状态类满足开闭原则。状态转换清晰状态转换逻辑明确易于理解和维护。 避免庞大的条件分支语句避免了在上下文类中使用大量的条件分支语句来根据状态改变行为。 缺点 增加系统复杂性随着状态的增多类的数量也会增多可能导致系统变得复杂。可能增加系统开销每个状态都是一个对象可能会增加内存开销。 五. 常见应用场景
状态模式常用于处理对象多种状态转换的情况如 订单状态管理待支付、已支付、已发货、已完成等状态转换。工作流引擎任务的不同执行阶段如待处理、处理中、已完成。网络连接状态连接中、已连接、断开连接等。UI组件的交互状态如按钮的可用/禁用状态。