有时需要为对象提供对状态的支持。据我所知,有两种方法:
显然,有必要为此目的使用State模式(我不确定)。
但是,阅读其他代码时,我通常只面对枚举,而不是状态模式。国家模式有权力吗?
发布于 2012-05-25 11:51:34
为什么我们要使用状态模式?若要删除条件逻辑重复,并将条件代码替换为多态,请执行以下操作。
什么时候有条件逻辑复制?当我们有许多依赖于状态的操作时,您就必须在每个操作中重复您的条件逻辑。当你有很多州的时候,它会变得很烦人。此外,代码复制意味着在添加新状态时,应该更新重复代码的每个副本。
因此,如果我没有重复的条件逻辑,我宁愿使用基于枚举的状态,而不是为状态创建具有许多类的新类层次结构。有时,我甚至更喜欢条件逻辑复制:例如,当我有许多状态,但只有很少的状态依赖的动作。在这种情况下,我更喜欢使用两个开关块,而不是创建10个新类。
发布于 2012-05-25 10:20:00
通常,ENUM方法涉及某种状态和转换的表(数组)。而设计模式在对象上实现了同样的功能。
如果您没有使用ENUM引用表方法,那么解决方案需要包含一个很大的if/else If块,这是非常难以管理的。关于下面这一节,我认为很明显,这个特定的解决方案是次等的。
以下是我要列出的每一种方法的优缺点
ENUM表
优点:
缺点:
。
设计模式
优点:
缺点:
通过查看代码,更难看到所有的状态及其关系,因为它们分散在几个不同的classes.
https://stackoverflow.com/questions/10752157
复制相似问题