c++ - Item - Inventory - 关系,哪一个应该知道另一个?

标签 c++ class design-patterns

编码一个可以包含 6 个项目的库存可能看起来像这样:

class Inventory {
    private:
        Item[6] m_items;
};

现在另一方面,一个项目看起来像这样:

class Item {
    private:
        Inventory* m_parent;
};

但是,显然这两个类不能相互认识。 一种解决方案是使用公共(public)基类,但这两个类没有任何共同点,这会导致更多问题,例如:我无法调用 m_parent->addItem(this); 来自 Item 的构造函数。

最佳答案

一个项目本身在逻辑上是完整的。项目值得在一个根本没有库存概念的系统中建模。一个项目甚至可能不在库存中。它甚至在理论上可能存在于多个库存中,具体取决于您建模的元素和库存种类。

另一方面,库存的存在仅仅是为了包含元素。它目前可能没有任何元素,但这本身就是库存的核心属性。

以上考虑使我得出结论,库存应该知道项目的概念以及它所持有的特定项目。虽然项目应该实现为完全忘记它们不仅在哪个库存中,而且对库存的概念

关于c++ - Item - Inventory - 关系,哪一个应该知道另一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16331761/

相关文章:

php - 在 PHP 中堆叠静态类

c++ - 可以在 C++ 类中使用位域吗?

java - 尝试在 java 中声明类时出现错误

java - getMessage 的设计模式

java - Memento 和 Command 设计模式有什么区别?

C++这个函数有什么问题

c++ - 模板类中的运算符 "()"

c++ - operator= 在子类中

c++ - RWTime 显示本地时间+1

java - 为什么枚举是单例的最佳实现?