我正在重写应用程序的基础架构,并且我遇到了一个有趣的情况。
我正在写一个课程Bag
:该课程有一个属性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
(如箭头)或{{ 1}}(像面包一样)。
玩家可以拥有50个箭头,并且那些需要全部表示为单个用户控件(堆栈)。这样做的简单方法是向Item
类添加Quantity
属性,并将其隐藏在Item
,Armor
和Weapon
类中,但是看起来不对,不仅因为我必须将它隐藏在其他派生类中,而且最终,世界上任何对象都可以以不同的数量存在,所以它看起来并不正确用这样的属性创建一个类。
似乎正确的方法是为那些可以叠加的项目设置Bag
的集合(类似于Item
。所以,简而言之:我的{ {1}}类不仅必须能够保存项目集合,还必须能够保存项目集合的集合。
例如,这是“魔兽世界”的截图:
如您所见,背包可以容纳单个物品和一叠物品。
我怎么能用漂亮的方式做到这一点?
答案 0 :(得分:5)
我能想到几个解决方案
MaxQuantity
为1 StackableItem
类,然后可以在其中包含一个数量,如果你愿意,它仍然允许你在不同的空间中携带多个相同的项目。您的屏幕截图中显示了一个示例红色(臂章?)