che*_*guy 6 oop design-patterns
我发现自己经常做这种事情,我想知道它是否是一种设计气味,或者我是否可以使用更好的设计模式.
这个过程有很多步骤,这些步骤在编译时是已知的,但很可能会改变.我在抽象的Step类中捕获通用性,编写一个StepLister,它返回一个步骤列表,一个用于Step的每个派生类,然后是一个调用StepLister的StepsRunner,然后迭代列表并运行每个步骤.有时一步取决于前一步的结果,有时不取决于前一步的结果.
有什么建议?
你的方法对我来说听起来很合理(迭代器/策略的组合)。
有时一个步骤将取决于前一步的结果,有时则不然。
不过这一点可能很有趣。由于我不知道每一步具体应该做什么,所以我只能给出非常笼统的想法。
所有步骤之间的依赖关系可以通过类似解释器的语法树而不是您采取的顺序步骤来建模。因此,您StepRunner将被丢弃,转而采用上下文/解释方法。
另一个想法可能是使用monad,它允许您按顺序将步骤粘合在一起,但我不知道这将如何轻松地集成您现有的面向对象概念(因为 monad 通常用于函数式编程)。
也许你根本不需要让事情变得(过度)复杂化;)