73 lines
1.3 KiB
C#
73 lines
1.3 KiB
C#
namespace AlicizaX
|
|
{
|
|
public interface IProcedure
|
|
{
|
|
IProcedureService ProcedureService { get; set; }
|
|
void Init();
|
|
void Enter();
|
|
void Leave();
|
|
void Update();
|
|
void Destroy();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 流程基类 - 使用模板方法模式定义流程生命周期
|
|
/// </summary>
|
|
public abstract class ProcedureBase : IProcedure
|
|
{
|
|
public IProcedureService ProcedureService { get; set; }
|
|
|
|
void IProcedure.Init()
|
|
{
|
|
OnInit();
|
|
}
|
|
|
|
void IProcedure.Enter()
|
|
{
|
|
OnEnter();
|
|
}
|
|
|
|
void IProcedure.Leave()
|
|
{
|
|
OnLeave();
|
|
}
|
|
|
|
void IProcedure.Update()
|
|
{
|
|
OnUpdate();
|
|
}
|
|
|
|
void IProcedure.Destroy()
|
|
{
|
|
OnDestroy();
|
|
}
|
|
|
|
|
|
protected virtual void OnInit()
|
|
{
|
|
}
|
|
|
|
protected virtual void OnEnter()
|
|
{
|
|
}
|
|
|
|
protected virtual void OnLeave()
|
|
{
|
|
}
|
|
|
|
protected virtual void OnUpdate()
|
|
{
|
|
}
|
|
|
|
protected virtual void OnDestroy()
|
|
{
|
|
}
|
|
|
|
|
|
protected internal void SwitchProcedure<T>() where T : ProcedureBase
|
|
{
|
|
ProcedureService.SwitchProcedure<T>();
|
|
}
|
|
}
|
|
}
|