状态模式

设计模式/行为型设计模式

简述

允许一个对象在其内部状态改变的时候改变其行为对象行为的变化是由于状态的变化引入,
那么即当内部状态发生变化的时候,就会改变对象的行为,而这种改变视乎就改变了整个类

UML图

代码

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
37
38
39
40
41
42
// 抽象状态接口
public interface CatState {
void execute();
}

// 具体状态角色
@Slf4j
public class DefaultState implements CatState {
@Override
public void execute() {
log.debug(“默认状态 — “);
}
}

// 具体状态角色
@Slf4j
public class ColorState implements CatState {
@Override
public void execute() {
log.debug(“颜色状态 — “);
log.debug(“猫的毛色 — “);
}
}

// 环境角色
@Data
public class CatContext {
private CatState catState;

public void handle(Cat cat) {
// 根绝Cat 的不同返回不同的CatState
catState = new DefaultState();
catState.execute();
}
}

public class Client {
public static void main(String[] args) {
CatContext catContext = new CatContext();
catContext.handle(new Cat());// 作为判断条件,最好是Cat的具体实例
}
}