状态模式用于根据状态决定行为的场景。
比如一个人处于不同的心情时,会说不同的话,会做不同的事情,说话和做事由状态决定。
这里可以将心情设计为一个抽象类,开心,伤心,抑郁时的说话,做事的行为作为抽象方法,并由具体的心情类实现这些抽象方法,将心情类传给人,在人的方法里使用心情类的方法。
然后,看代码,实现起来就很容易理解,
心情抽象类
public abstract class Emotion {
abstract void say();
abstract void doSomething();
}
具体实现类,开心
public class Happy extends Emotion {
@Override
void say() {
System.out.println("I am happy");
}
@Override
void doSomething() {
System.out.println("dance");
}
}
抑郁,
public class Depressed extends Emotion {
@Override
void say() {
System.out.println("I am depressed");
}
@Override
void doSomething() {
System.out.println("eat");
}
}
人,
public class Person {
private Emotion emotion;
public void setEmotion(Emotion emotion) {
this.emotion = emotion;
}
public void say() {
emotion.say();
}
public void doSomething() {
emotion.doSomething();
}
}
测试方法:
public class Test {
public static void main(String[] args) {
Person p = new Person();
p.setEmotion(new Happy());
p.say(); p.doSomething();
p.setEmotion(new Depressed());
p.say(); p.doSomething();
}
}

本文通过一个具体例子详细介绍了状态模式的概念及其实现方式。利用抽象类和具体类来表现不同状态下对象的不同行为,使得代码更加灵活易维护。
471

被折叠的 条评论
为什么被折叠?



