在状态模式(State Pattern)中,类的行为是基于它的状态改变的,属于行为型模式。
将状态抽象为接口或抽象类
Girl
package com.dp.state;
/**
* 状态模式
* 类的行为是基于它的状态改变的
* 对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。
* */
public class Girl {
private String name;
//状态属性会变
private GirlState girlState = new GirlHappyState();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//依据状态改变
public void smil() {
girlState.smil();
}
public void cry() {
girlState.cry();
}
public void say() {
girlState.say();
}
}
GirlState
package com.dp.state;
/**
* 把状态属性抽象为抽象类或接口
* 由不同的状态来实现
* */
public abstract class GirlState {
public abstract void smil();
public abstract void cry();
public abstract void say();
}
GirlHappyState
package com.dp.state;
public class GirlHappyState extends GirlState{
@Override
public void smil() {
System.out.println("Happy smil");
}
@Override
public void cry() {
System.out.println("Happy cry");
}
@Override
public void say() {
System.out.println("Happy say");
}
}
GirlUnHappyState
package com.dp.state;
public class GirlUnHappyState extends GirlState{
@Override
public void smil() {
System.out.println("UnHappy smil");
}
@Override
public void cry() {
System.out.println("UnHappy cry");
}
@Override
public void say() {
System.out.println("UnHappy say");
}
}