【发布时间】:2018-07-18 12:06:15
【问题描述】:
我有一个关于设计的问题。有一个类 A 拥有 Foo 类型的对象映射。 A 的对象创建 Foo 对象并将它们存储在地图中,但是当某个指示出现时,我想在 B 类中做一些工作并在那里创建更多的 Foo 对象。 A 知道 B 并将任务委托给它,但反之则不然。在 B 中创建的 Foo 对象仍然需要进入 A 中的映射。
可能的解决方案:
- 将 shared_ptrs 的映射返回到从 B 中的方法创建的对象。
- 将映射从 A 传递给 B 中的方法作为非常量引用。
不知何故,我觉得这两种方法都很糟糕,B 类不应该真正创建它不拥有的对象。在这种情况下是否有一些设计模式会有所帮助?我在考虑一些工厂,但它只是为问题添加了一个代理,我真的认为它没有多大帮助。或者也许我应该完全摆脱 B 类并拥有 A 中的所有逻辑?然而,这里的问题是我不希望 A 做太多事情。
【问题讨论】:
-
你能从 B 向量中返回创建的对象,然后将这些对象插入到 A 中的地图中吗?
-
您能否提供更多信息,说明您要通过此设计解决的实际问题是什么?您的问题目前侧重于如何使特定设计工作,而不是解释您要完成的工作。如果不知道实际问题是什么,就很难提出更好的方法……
标签: c++ oop design-patterns