0%

状态模式

状态模式

允许一个对象在其内部状态改变时允许改变它的行为,根据状态来分离和选择行为

核心概念

  • Context 上下文
  • State 状态接口,用来封装与上下文的一个特定状态所对应的行为
  • ConcreteState 具体实现状态处理类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
* State接口
* @author zh
* @date 2022/10/17 10:50
*/
public interface IState {

// 状态对应的处理
void handle(String param);
}

public class ConcreteStateA implements IState {
@Override
public void handle(String param) {
System.out.println("stateA");
}
}

public class ConcreteStateB implements IState {
@Override
public void handle(String param) {
System.out.println("stateB");
}
}

public class Context {
private IState state;

public void setState(IState state) {
this.state = state;
}

public void request(String param){
state.handle(param);
}
}

优缺点

优点

  • 简化应用逻辑控制
  • 更好的分离状态和行为
  • 更好的扩展性
  • 显式化的进行状态转换

缺点

  • 使用场景

  • 如果一个对象的行为取决于它的状态,而且必须在运行时根据状态来改变它的行为

  • 如果一个操作中含有很多的多分支语句,而且这些分支又依赖于该对象的状态

欢迎关注我的其它发布渠道