Interface
interface IAction
{
bool CanExecute(object args);
void Execute(object args);
}
interface IState
{
string Id {
get; }
List<ITransition> Transions {
get; }
void Enter(object args);
void Exit(object args);
string Transit(string transionId, object args);
}
interface IStateMachine
{
IState CurrentState {
get; }
List<IState> States {
get; }
bool Transit(string transitionId, object args);
}
/// <summary>
/// from和to相同时,表示想执行相关的行为
/// </summary>
interface ITransition
{
string Id {
get; } // From->To的路径可能有多种,因此添加ID作以区分
string From {
get; }
string To {
get; }
List<IAction> Actions {
get; } //状态转换所需要执行的行为
bool IsReadyToTransit(object args); //判断执行的Actions是否都可以执行,都可以执行时表示可以进行转换
}
Realize
class Transition : ITransition
{
public string Id {
get; }
public string From {
get; }
public string To {
get; }
public List<IAction> Actions {
get; }
public Transition(string id,