namespace AlicizaX
{
public interface IProcedure
{
IProcedureModule ProcedureModule { get; set; }
void Init();
void Enter();
void Leave();
void Update();
void Destroy();
}
///
/// 流程基类 - 使用模板方法模式定义流程生命周期
///
public abstract class ProcedureBase : IProcedure
{
public IProcedureModule ProcedureModule { 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() where T : ProcedureBase
{
ProcedureModule.SwitchProcedure();
}
}
}