02 状态模式

using UnityEngine;

/// <summary>
/// 功能说明:状态模式 吃睡干例子
/// </summary>
public class DPState:MonoBehaviour
{
    private void Start()
    {
        Context context = new();
        context.SetState(new Sleep(context));
        context.Handle();
   
    }


}
public interface IState
{
    void Handle();
}

public class Context//状态机
{
    private IState mState;//当前状态

    public void SetState(IState state) //设置状态
    {
        mState = state;
    }

    public void Handle()
    {
        mState.Handle(); //当前状态下需要执行的方法
    }
    
}

public class EatMeals : IState
{
    private Context mContext;

    public EatMeals(Context context)
    {
        mContext = context;
    }
    public void Handle()
    {
        Debug.Log("我们正在吃饭");
    }
}

public class Work : IState
{
    private Context mContext;

    public Work(Context context)
    {
        mContext = context;
    }
    public void Handle()
    {
        Debug.Log("我们正在工作");
    }
}


public class Sleep : IState
{
    private Context mContext;

    public Sleep(Context context)
    {
        mContext = context;
    }
    public void Handle()
    {
        Debug.Log("我们正在睡觉");
    }
}

 

posted on 2024-02-25 22:56  莫凡-荒天帝  阅读(1)  评论(0编辑  收藏  举报

导航