本文介绍: 在上述示例中,状态模式被用于管理上下文(Context)对象的不同状态。每个具体状态(Concrete State)都实现了状态(State)接口,并根据需要进行状态转换。这对于需要根据状态改变行为的场景非常有用,例如自动售货机中的不同状态(待机、售货、缺货等)的管理。状态模式是一种行为设计模式,它允许对象在内部状态改变时改变它的行为。状态模式的关键组件有三个:上下文(Context)、状态(State)和具体状态(Concrete State)。
状态模式是一种行为设计模式,它允许对象在内部状态改变时改变它的行为。它基于对象的内部状态而改变其行为,看起来好像修改了对象的类。
状态模式的关键组件有三个:上下文(Context)、状态(State)和具体状态(Concrete State)。
// 抽象状态类
interface State {
void handle(Context context);
}
// 具体状态类1
class ConcreteState1 implements State {
public void handle(Context context) {
System.out.println("当前状态是状态1");
context.setState(new ConcreteState2()); // 设置下一个状态
}
}
// 具体状态类2
class ConcreteState2 implements State {
public void handle(Context context) {
System.out.println("当前状态是状态2");
context.setState(new ConcreteState1()); // 设置下一个状态
}
}
// 上下文类
class Context {
private State state;
public Context(State state) {
this.state = state;
}
public void setState(State state) {
this.state = state;
}
public void request() {
state.handle(this);
}
}
// 客户端代码
public class Main {
public static void main(String[] args) {
// 创建初始状态
State initialState = new ConcreteState1();
Context context = new Context(initialState);
// 发起请求
context.request(); // 打印"当前状态是状态1"
context.request(); // 打印"当前状态是状态2"
context.request(); // 打印"当前状态是状态1"
}
}
在上述示例中,状态模式被用于管理上下文(Context)对象的不同状态。每个具体状态(Concrete State)都实现了状态(State)接口,并根据需要进行状态转换。上下文类(Context)通过委托给当前状态对象来处理请求,并可以在运行时更改状态。
通过状态模式,客户端代码可以与上下文对象进行交互,而不需要直接处理复杂的状态逻辑。这对于需要根据状态改变行为的场景非常有用,例如自动售货机中的不同状态(待机、售货、缺货等)的管理。
原文地址:https://blog.csdn.net/qq_45816864/article/details/134568675
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_13347.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。