我正在尝试使用状态模式,但我有一个问题。状态模式是否仅针对具有以下状态数量的情况而设计:
TCPState:1- TCPEstablished 2- TCPLisenting 3- TCPClosed 等。
或者它可以用于具有数百个状态的情况,例如员工考勤系统中的员工,其中员工将具有多个组件的复合状态,例如他的余额中的年假数,他应该补偿的小时数月,一个状态来表示他的小时工资率取决于本月的工作量等。每个员工可以具有多个属性的组合,最终被认为是具有某种行为的状态。
在这种情况下会有数百个状态对象,这样做正确吗?您将如何管理状态对象命名?以及如果例如三分之一的州对某种方法共享某种行为,而另一季度对某种方法共享另一种行为等,您会怎么做。即并非所有州在所有方法中都具有独特的行为。我不认为复制实现并将其粘贴到对这种通用方法具有相同行为的所有状态中是明智的!
非常感谢。