有时需要支持对象的状态。据我了解有两种方法:
- 枚举(简单)
- STATE模式(OC原理)
显然需要使用状态模式来达到这样的目的(我不确定)。
但是阅读其他代码时,我经常遇到的只是枚举而不是状态模式。
状态模式有权力吗?
通常,ENUM 方法涉及某种状态和转换的表(数组)。而设计模式对对象实现了相同的效果。
如果您没有引用带有 ENUM 的表方法,那么解决方案将需要涉及大量的 if/else if 块,这是相当难以管理的。参考下面的部分,我认为很明显这个特定的解决方案是较差的。
以下是我列出的每个优点和缺点
枚举表
PROs:
- 由于表是在一处定义的,因此更容易查看所有状态和转换
CONs:
- 状态和转换更多硬编码的并且需要更多的代码更改来扩展
设计模式
PROs:
- 通过添加新对象更容易扩展新状态。 (开闭原理)
- 更容易确保所有信号都由状态处理,因为基类应该将信号定义为抽象函数。
- 通过从状态派生更容易扩展特定状态的行为。状态模式应该将特定状态的行为放在一个对象中。
CONs:
- 通过查看代码来了解所有状态及其关系更加困难,因为它们分散在几个不同的类中。
- 最终可能会创建数量无法管理的对象。但将此与相应 ENUM 解决方案所需的相应 if/else 块进行比较。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)