状态模式是对象的行为模式。状态模式运行一个对象在其内部状态改变的时候改变其行为。
代码:
public class Test {
public static void main(String[] args) {
Person p = new Person();
p.smile();
p.eat();
p.sleep();
p.setState(new SadState()); // 改变对象的状态
p.smile();
p.eat();
p.sleep();
}
}
class Person {
private FeelingState state = new HappyState();
public void setState(FeelingState state) { // 提供方法,可以改变对象内部状态
this.state = state;
}
public void smile () {
state.smile();
}
public void eat () {
state.eat();
}
public void sleep() {
state.sleep();
}
}
interface FeelingState {
void smile ();
void eat ();
void sleep();
}
class HappyState implements FeelingState {
public void smile() {
System.out.println("狂笑。。。);
}
public void eat() {
System.out.println("大口大口吃饭。。。);
}
public void sleep() {
System.out.println("婴儿般睡眠。。。");
}
}
class SadState implements FeelingState {
public void smile() {
System.out.println("惨笑。。。);
}
public void eat() {
System.out.println("难以下咽。。。);
}
public void sleep() {
System.out.println("彻夜难眠。。。);
}
}