using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class design : MonoBehaviour {
private void Start()
{
Context context = new Context();
context.SetState(new ConcreteStateA(context));
context.Handle(5);
context.Handle(20);
context.Handle(30);
context.Handle(4);
context.Handle(6);
}
}
public class Context//状态应用者
{
private IState mState;
public void SetState(IState state)
{
mState = state;
}
public void Handle(int arg)
{
mState.Handle(arg);
}
}
public interface IState
{
void Handle(int arg);
}
public class ConcreteStateA : IState//状态A
{
public Context mContext;
public ConcreteStateA(Context context)//构造方法 传递状态应用者
{
mContext = context;
}
public void Handle(int arg)
{
Debug.Log("ConcreteStateA.Handle" + arg);
if (arg > 10)
{
mContext.SetState(new ConcreterStateB(mContext));
}
}
}
public class ConcreterStateB : IState//状态B
{
public Context mContext;
public ConcreterStateB(Context context)//构造方法 传递状态应用者
{
mContext = context;
}
public void Handle(int arg)
{
Debug.Log("ConcreteStateB.Handle" + arg);
if (arg >20)
{
mContext.SetState(new ConcreteStateA(mContext));
}
}
}
状态模式的代码
最新推荐文章于 2022-08-02 17:49:00 发布