我正在使用C++。我有不同的类,基本上是做同样的事情的策略。我们有基类Strategy
从中继承更先进的策略。 Strategy
的每个直接或间接子类都有一个方法run()
。高级策略通常会在其方法run()
中调用其父项的方法run()
,然后添加一些预处理或后处理。它也可能在循环内多次调用它。使用常用方法和数据结构的策略
现在所有这些策略都应用于相同的DataStruct
。确实,每种策略都有独特的DataStruct
。但是,在每个策略中,DataStruct
的含义可能不尽相同。
让我给你举一个简单的例子:假设StrategyA
做一些优化过设置成一段StrategyAUnionB
确实优化了集合A联盟B. DataStruct.optimalValue
确实有两个意义,但意义是不一样的。
最简单的解决方案,我现在看到的是在基类中把DataStruct
类型的属性dataStruct
,如果一个策略将调用它需要做出的dataStruct
副本,它会使用更新dataStruct
父类的run()
在对父类的run()
的调用之后。
我清楚地看到这个解决方案不是很干净,如果能从更有经验的程序员那里得到建议,我将不胜感激。
我不认为这个解决方案的工作原理是因为每个人都会修改相同的DataStruct对象......但是在Strategy和Datastruct之间有一个分离可能是一个好主意。 –