状态模式用于根据状态决定行为的场景。
比如一个人处于不同的心情时,会说不同的话,会做不同的事情,说话和做事由状态决定。
这里可以将心情设计为一个抽象类,开心,伤心,抑郁时的说话,做事的行为作为抽象方法,并由具体的心情类实现这些抽象方法,将心情类传给人,在人的方法里使用心情类的方法。
然后,看代码,实现起来就很容易理解,
心情抽象类
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(); } }
版权声明:本文为suoyx原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。