设计库存 class
Design an inventory class
我正在重写应用程序的基础架构,我遇到了一个有趣的情况。
我正在写一个 class Bag
:class 有一个 属性 Items
可以容纳 Item
的集合的:
Weapon : Item
Armor : Item
Ammunition : Item
Bag : Item (because a player may want to put a bag inside of another one)
到这里一切都很好,问题是...
在前端,虽然对相同 Armor
或 Weapon
的副本使用不同的用户控件是可以的,但对于 Ammunition
(如箭头)或Item
(像面包)。
一个玩家可以有 50 个箭头,这些箭头都需要表示为单个用户控件(堆栈)。做到这一点的简单方法是将 Quantity
属性 添加到 Item
class 并将其隐藏在 Armor
、Weapon
和 Bag
classes,但这似乎不对,不仅因为我必须对其他派生的 classes 隐藏它,而且最终,世界可以以不同的数量存在,所以用 属性 来制作 class 似乎是不对的。
似乎正确的方法是收集 Item
的那些可以堆叠的物品(类似于 Stack(Of Item)
。所以,简而言之:我的 Bag
class不仅要能装物品的集合,还要能装物品的集合。
比如这是魔兽世界的截图:
如您所见,背包既可以容纳单个物品,也可以容纳成堆的物品。
我怎样才能以不错的方式做到这一点?
我能想到几个解决方案
- 设置数量和最大数量 - 然后单数项的
MaxQuantity
为 1
- 制作一个
StackableItem
class 弹药等继承自,然后您可以在其中包含一个数量,如果您愿意,它仍然允许您在不同的空间携带多个相同的物品到。您的红色(臂章?) 屏幕截图中显示了一个示例
我正在重写应用程序的基础架构,我遇到了一个有趣的情况。
我正在写一个 class Bag
:class 有一个 属性 Items
可以容纳 Item
的集合的:
Weapon : Item
Armor : Item
Ammunition : Item
Bag : Item (because a player may want to put a bag inside of another one)
到这里一切都很好,问题是...
在前端,虽然对相同 Armor
或 Weapon
的副本使用不同的用户控件是可以的,但对于 Ammunition
(如箭头)或Item
(像面包)。
一个玩家可以有 50 个箭头,这些箭头都需要表示为单个用户控件(堆栈)。做到这一点的简单方法是将 Quantity
属性 添加到 Item
class 并将其隐藏在 Armor
、Weapon
和 Bag
classes,但这似乎不对,不仅因为我必须对其他派生的 classes 隐藏它,而且最终,世界可以以不同的数量存在,所以用 属性 来制作 class 似乎是不对的。
似乎正确的方法是收集 Item
的那些可以堆叠的物品(类似于 Stack(Of Item)
。所以,简而言之:我的 Bag
class不仅要能装物品的集合,还要能装物品的集合。
比如这是魔兽世界的截图:
如您所见,背包既可以容纳单个物品,也可以容纳成堆的物品。
我怎样才能以不错的方式做到这一点?
我能想到几个解决方案
- 设置数量和最大数量 - 然后单数项的
MaxQuantity
为 1 - 制作一个
StackableItem
class 弹药等继承自,然后您可以在其中包含一个数量,如果您愿意,它仍然允许您在不同的空间携带多个相同的物品到。您的红色(臂章?) 屏幕截图中显示了一个示例