use*_*896 6 state design-patterns
有时需要为对象的状态提供支持.据我所知,有两种方法:
很明显,需要将状态模式用于此类目的(我不确定).
但阅读我经常面对枚举的其他代码根本不是状态模式.州模式有权力吗?
Bra*_*ady 12
通常,ENUM方法涉及某种状态和转换的表(数组).而设计模式与对象实现相同.
如果你没有引用带有ENUM的表方法,那么解决方案需要涉及一个大的if/else if块,这是非常难以管理的.参考下面的部分,我认为很明显这个特殊的解决方案是劣等的.
以下是我列出的每个PRO和CON的内容
ENUM表
优点:
缺点:
设计模式
优点:
缺点:
为什么我们使用状态模式?删除条件逻辑复制,并用多态替换条件代码.
我们什么时候有条件逻辑复制?当我们有许多依赖于状态的动作时,你必须在每个动作中复制条件逻辑.当你有很多州时会变得很烦人.代码重复意味着您在添加新状态时应更新重复代码的每个副本.
因此,如果我没有重复的条件逻辑,我宁愿选择基于枚举的状态,而不是创建具有许多状态类的新类层次结构.有时我甚至更喜欢条件逻辑复制:例如,当我有很多状态,但只有很少的状态依赖的动作.在这种情况下,我更喜欢有两个开关块而不是创建十个新类.
| 归档时间: |
|
| 查看次数: |
2815 次 |
| 最近记录: |