状态模式中的最大状态数

时间:2013-02-17 11:01:35

标签: design-patterns state max composite

我正在尝试使用状态模式,我有一个问题。状态模式是否仅针对具有有限数量的状态的情况设计,如下所示:

TCPState: 1- TCPEstablished 2- TCPLisenting 3- TCPClosed 等

或者它可以用于有数百个州的情况,例如员工出勤系统中的员工,其中员工将具有多个组件的复合状态,例如他在余额中的年度假期数,他的小时数应该补偿这个月,一个国家代表他的小时工资率取决于本月的工作量等,每个员工可以结合多个属性,最终被认为是具有某种行为的国家。

在这种情况下会有hundrerds状态对象,这是正确的事情吗?你将如何管理状态对象的命名?如果例如三分之一的州分享某种方法的特定行为,另一个四分之一分享某种方法的另一种行为等,你会怎么做?即并非所有州都在其所有方法中都具有独特的行为。我不认为复制实现并将其粘贴到所有对这种常用方法具有相同行为的状态是明智的!

非常感谢。

1 个答案:

答案 0 :(得分:0)

没有已定义的“状态”类的最大数量,但如果为每个“状态”实现“状态”类,则可能最终会出现大量代码重复,这本身就是一个问题。

请注意,指定值组合中的“状态”与状态模式中的'State'类不同,后者是一组抽象方法。如果你问我一个用词不当,那么'状态'最好在模式中被称为'行为'。

如果您可以捕获有限的“状态”类中的行为(即,如果它可以使用有限数量的代码行构建,那么可能是的),那么您可以应用状态模式。正如您已经提到的,您可以通过维护多个活动状态多次应用状态模式。