使用状态模式时业务逻辑在哪里?

时间:2011-04-29 21:28:21

标签: java c# state

它是包装器对象吗?或国家对象本身?

我可以看一些例子吗?

3 个答案:

答案 0 :(得分:0)

基本上,您将拥有状态变化的业务逻辑。这可能包括“state_entered”触发器和“state_leave”触发器。

您可能需要“state_idle”触发器才能让状态进入自身。

示例将要求您的代码以您的代码为基础。

答案 1 :(得分:0)

在状态模式中,业务逻辑关注从一个状态到下一个状态的转换。你有两个选择,两者同样有效。

状态更改逻辑可以存在于状态对象本身中,这使得向系统添加新状态对象变得非常容易,但是更紧密地耦合子类。

或者状态改变逻辑可以驻留在上下文中。因此,各州本身并不了解彼此。增加新的州将需要修改背景。

在线模式有几个很好的资源可以为您提供很好的示例。例如this site。或this one使用特定的c#示例。

答案 2 :(得分:-2)

请更具体地说明您的问题,因为答案可能取决于具体的用例。但是,通常我希望状态实现包装器对象使用的公共内部接口,而后者又实现了一种公共接口。因此,业务逻辑将被拆分,从而基本上分为两种类型。