public class NewBehaviourScript : MonoBehaviour
{
void Start()
{
//验证
StateManager con = new StateManager();
con.SetState(new StateA());
Debug.Log(con.state_current);
con.SetState(new StateB());
Debug.Log(con.state_current);
con.SetState(new StateC());
Debug.Log(con.state_current);
}
}
//抽象的状态类
abstract class State
{
public abstract void Handle();
}
//抽象类的实例StateA,用来表示各种状态
class StateA : State
{
public override void Handle()
{
Debug.Log("我是状态A");
}
}
//抽象类的实例StateB,用来表示各种状态
class StateB : State
{
public override void Handle()
{
Debug.Log("我是状态B");
}
}
//抽象类的实例StateC,用来表示各种状态
class StateC : State
{
public override void Handle()
{
Debug.Log("我是状态C");
}
}
//状态管理类。负责状态的切换,执行不同代码块
class StateManager
{
//当前状态的字段,可以用来查看当前状态
public State state_current;
//改变当前变量的方法
public void SetState(State state)
{
this.state_current = state;
this.state_current.Handle();
}
}
状态模式 对象行为型模式\状态对象(Objects for States)
最新推荐文章于 2024-02-28 22:14:05 发布