State模式主要适用于在不同状态下会有不同的行为产生。即行为的变化追随状态的变化而变化。
如人们的表现行为会随着自己的心情变化而变化。
此时,状态就是心情,心情是阴晴多变的,所以表现行为就随心而动。
当我们接受几个设计模式之后渐渐会发现,很多时候在使用设计模式的时候都是由于可变性引起的,就是要针对这些可变性进行封装,已达到所谓的OCP原则。
package com.wayne.state;
public interface Mood {
public void action();
}
package com.wayne.state;
public class HappyMood implements Mood {
public void action() {
System.out.println("i am happy...");
}
}
package com.wayne.state;
public class HurtMood implements Mood {
public void action() {
System.out.println("i am so losting ........");
}
}
package com.wayne.state;
public class Context {
private Mood mood;
public Context(Mood mood) {
this.mood = mood;
}
public void action() {
mood.action();
}
}
package com.wayne.state;
public class Person {
public static void main(String args[]) {
Mood mood = new HappyMood();
Context cxt = new Context(mood);
cxt.action();
}
}