3
我目前正在建立一个通用的状态机,我使用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;
}