我目前正在构建一个通用状态机,并且我正在使用StateMachine
带有通用参数的构造函数来设置创建时的回退状态,以防机器无事可做。
我想知道拥有两个构造函数是否是不好的做法,一个在需要创建新状态对象时由状态机本身使用,另一个在第一次初始化状态机时使用(设置默认回退状态) .
我最大的问题是:我是否在滥用泛型,是否有不应该使用泛型的时候?
状态机创建:
//The generic parameter is the default "fallback" state.
_nodeStateMachine = new NodeStateMachine<IdleNodeState>();
状态机构造函数:
public NodeStateMachine()
{
_currentState = new T();
}
以下是在NodeStateMachine
类中更改状态的方式:
public void ChangeState<U>() where U : INodeState, new()
{
_nextState = new U();
}
有问题的构造函数直接位于状态本身:
public NullNodeState(){} // To use the class generically.
public NullNodeState(ConditionCheck check)
{
_nullCheck = check;
}