在编写“通用RPG编号3,742”时,我为“物品”和“库存”实现了一个类。从概念上讲,“物品”是指一种特定的物品。我想要一种方法来“堆叠”物品,这样我在“库存”中每种“物品”只需要一个条目。
为此,我创建了一个“物品包装器”,它具有一个私有“物品”和“物品数量”。它还有一些处理获取所有这些“物品”的总重量等的方法。
随着我的扩展,问题就来了。我发现自己想要复制几乎每个“物品”方法到我的“物品包装器”类中。另一种选择是将“物品”设为“公共”,并在“库存”类中引用它,这同样不好。
这是“物品包装器”不应该存在的信号吗?这会在“库存”中创建重复的物品或使“物品”概念变成单数形式。我觉得可能有更好的解决方案,但我似乎找不到它。
编辑:增加了有关当前类结构的更多说明。
“玩家角色”有一个私有“库存”。
“库存”有一个私有[mumble]“向量”,其中包含“物品包装器”。
“物品包装器”有一个私有“物品”和私有“int”“how_many”。
请注意“有”。随着我对“库存”的扩展,我注意到我需要“物品名称”或其他特定于“物品”的东西。如果我不改变我的设计,要么将“Item”中的所有“Get”函数复制到“Item Wrapper”中,要么在“Item Wrapper”中使“Item”公开。
为此,我创建了一个“物品包装器”,它具有一个私有“物品”和“物品数量”。它还有一些处理获取所有这些“物品”的总重量等的方法。
随着我的扩展,问题就来了。我发现自己想要复制几乎每个“物品”方法到我的“物品包装器”类中。另一种选择是将“物品”设为“公共”,并在“库存”类中引用它,这同样不好。
这是“物品包装器”不应该存在的信号吗?这会在“库存”中创建重复的物品或使“物品”概念变成单数形式。我觉得可能有更好的解决方案,但我似乎找不到它。
编辑:增加了有关当前类结构的更多说明。
“玩家角色”有一个私有“库存”。
“库存”有一个私有[mumble]“向量”,其中包含“物品包装器”。
“物品包装器”有一个私有“物品”和私有“int”“how_many”。
请注意“有”。随着我对“库存”的扩展,我注意到我需要“物品名称”或其他特定于“物品”的东西。如果我不改变我的设计,要么将“Item”中的所有“Get”函数复制到“Item Wrapper”中,要么在“Item Wrapper”中使“Item”公开。
Item
的集合吗?一个wrapper
通常包含单个实例,就像糖果一样。 - maasg