我有一门可以从状态模式中受益的课程。然而,常见的“用状态/策略替换类型代码”重构似乎不太适合我的情况:状态是通过观察其他对象来计算的,没有类型代码变量。
我的大部分类代码只是在调用它时“计算”一些状态,并运行该状态的函数。
强制类型代码变量感觉不对,因为:
我将被迫在每个使用多态函数的地方调用“updateState()”函数。
我的班级将不再是 100% 的行为,我宁愿这样做,而不是某种内部状态。
由于每次调用其函数时都必须计算状态,我想知道我是否在考虑错误的模式。
通常我会重构这个:
if (this.someOtherThingIsRunning()) {
...
} else {
...
}
像这样:
typecode.doSomething()
// that being polymorphic
这样做似乎很奇怪:
updateTypeCode()
typecode.doSomething()
状态模式是否适用于这种情况?是否有任何替代策略可以从没有类型代码的多态性中提取?