具有通用方法和数据结构的策略
Strategies with common methods and data structure
我正在使用C++。我有不同的类,基本上是做同样事情的策略。我们有基类Strategy
,从中继承更高级的策略。Strategy
的每个直接或间接子类都有一个方法run()
。高级策略通常会在其方法run()
中调用其父级的方法run()
,然后添加一些预处理或后处理。它也可能在循环中多次调用它。
现在所有这些策略都应用于同一DataStruct
。事实上,每种策略都明确了独特的DataStruct
。但是,在每个策略中,DataStruct
的含义可能不同。
让我给你一个简单的例子:想象一下StrategyA
对集合 A 进行一些优化,而StrategyAUnionB
对集合 A 联合 B 进行优化。 DataStruct.optimalValue
确实对两者都有含义,但含义并不相同。
我现在看到的简单解决方案是在基类中放置一个 DataStruct
类型的属性dataStruct
,如果策略将调用父类的run()
,则需要创建dataStruct
的副本,它将用于在调用父类run()
后更新dataStruct
。
我清楚地看到这个解决方案不是很干净,如果我能从更有经验的程序员那里得到建议,我将不胜感激。
既然没人回答,我就试一试。
我建议将策略与数据结构分开。每当你调用某个特定Strategy
的run()
时,你都会传递给它一个DataStruct
对象(作为引用(来处理和更新它。当然,这将扩展到您的类层次结构。这样引用将被传递到基类,然后最终由起始函数进行后处理。
这将避免有关数据结构中字段含义的任何歧义,因为当您将其传递给函数时,您必须确定您的意思。
相关文章:
- 链表,反向函数,数据结构
- 如何使用set实现无序数据结构?
- 我们可以将数据永久保存为数据结构吗?
- C++中的可变长度数组/数据结构
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- 通过 NIF 从C++返回自定义数据结构
- 编译器上的策略数据结构不起作用
- 尝试构建"lock-free"数据结构C++
- 设计将引用元素移动到开头的数据结构.C++
- 在学习数据结构之前对STL有一个了解是好的吗?
- 如何解析表示树状数据结构的字符串
- 我对数据结构、双向链表有一些问题
- googletest:测试太大的数据结构
- C++中deque数据结构的大O是什么?
- 我可以使用哪种数据结构来处理这种方式
- 将文本文件解析为树状数据结构
- C++ 中具有 O(1) 搜索时间复杂度的数据结构
- 哪些存储了不完整类型的 STL 数据结构可以用作类成员?
- 具有通用方法和数据结构的策略
- 数据结构-在C++中设置“std::unordered_set”中初始存储桶数的策略