我正在尝试使用状态模式并且有一个问题。状态模式只设计用于像这样仅有少量状态的情况吗:
TCPState: 1- TCPEstablished 2- TCPLisenting 3- TCPClosed 等等。
还是它可以用于具有数百个状态的情况,例如员工考勤系统中的员工,其中员工将具有多个组件的组合状态,例如他在余额中拥有的年假数,他应该弥补本月的工作时间,表示他的小时薪酬率的状态,具体取决于本月的工作负载等。每个员工都可以具有多个属性的组合,最终被认为是具有某些特定行为的状态。
在这种情况下,将会有数百个状态对象,这样做是否正确?您将如何管理状态对象的命名?如果例如三分之一的状态共享某些方法的某种行为,而另外四分之一则共享某个方法的另一种行为等等,您将怎么做。即,并不是所有状态必须在所有方法中具有唯一的行为。我认为将实现复制并粘贴到所有具有此常见方法相同行为的状态中不明智!
非常感谢。