状态模式
作者:互联网
概念
人有开心和难过两种状态,当我开心的时候我就去上班,当我难过的时候我就不想上班,这种根据状态决定行为的方式,称为状态模式
实现方式
/**
* 状态
*/
public class Demo {
public static void main(String[] args) {
Person person = new Person();
// 改变状态为开心
person.changeState(new Happy());
person.behavior();
// 改变状态为难过
person.changeState(new Sad());
person.behavior();
}
}
// 状态,所有状态都要实现该接口
interface State {
void doWork();
}
// 开心的状态
class Happy implements State {
@Override
public void doWork() {
System.out.println("我今天开心,我去上班");
}
}
// 难过的状态
class Sad implements State {
@Override
public void doWork() {
System.out.println("我今天难过,不想上班,请假");
}
}
// 人。 人的状态可能是开心,也可能是难过
class Person {
private State state;
public void changeState(State state) {
this.state = state;
}
// 行为。根据状态决定作出什么行为
public void behavior() {
state.doWork();
}
}
我今天开心,我去上班
我今天难过,不想上班,请假
状态和策略模式区别
- 这两种模式在代码方面基本没什么区别,只是一种强调的是行为,一种强调的是状态
- 策略模式强调的是一种行为。比如上班,那么策略模式强调的是上班的过程
- 状态模式强调的是一种状态,根据状态可以触发哪种行为。比如我今天很开心,所以我去上班。强调的是开心,上班是由开心触发的一种行为
标签:状态,开心,void,模式,上班,State,public 来源: https://www.cnblogs.com/luchaoguan/p/15579107.html