0%

state

状态


定义

允许一个对象在其内部状态改变时改变它的行为

对象看起来似乎修改了它的类

栗子

qq的状态

  • 我在线上
  • Q我吧
  • 离开
  • 离线

实现

类的内部持有一个State,根据情况可以切换State

把不同的状态分布到不同的类里

价值连城的机器人

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package eternal.fire;

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Robot arina = new Robot();
Scanner scanner = new Scanner(System.in);
while (true) {
String s = scanner.next();
arina.chat(s);
}
}
}
1
2
3
4
5
6
7
8
9
package eternal.fire;

public class ConnectedState implements State{

@Override
public void reply() {
System.out.println("my name is Arina, it's nice to be with you");
}
}
1
2
3
4
5
6
7
8
9
package eternal.fire;

public class DisConnectedState implements State{

@Override
public void reply() {
System.out.println("hang on a second~, I will coming soon~~~");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package eternal.fire;

public class Robot {
private State state = new DisConnectedState();

public void chat(String s) {
if (s.equals("hi")) {
state = new ConnectedState();
}
if (s.equals("bye")) {
state = new DisConnectedState();
}
state.reply();
}
}