为库存原型创建对象层次结构的最佳方法

赛伯利斯

1.物品数据库

我正在用C#进行库存。通常我用python编写程序,这就是为什么我在使用静态类型的c#时遇到一些设计问题。由于缺乏实践。

我已经创建了简单的Item数据库。我开普通班Item它具有一般的属性,例如id'name'...以及使我从Item继承的对象成为新类型例如Weapon项目。这是代码

Item.cs

public class Item {
  public string id;
  public string name;
  public string prefab;
  public string icon;

  public virtual string getTooltipText() {
    return "";
  }
}

Weapon.cs

public class Weapon : Item {
  public int damage;

  public override string getTooltipText() {
    return "damage: " + damage;
  }
}

如您所见,每次我需要创建新类型的对象时,都需要创建继承的新类 Item

我加载到字典的所有项目都很棒

public Dictionary<string, Item> Items = new Dictionary<string, Item>();

并根据数据库文件中的项目类型创建项目类

2.问题部分。存货

现在,我想从问题的第一部分开始使用我的Item数据库创建一个清单。所有项目在用户库存中都具有常规属性。例如-数量项目数据库中项目的引用但是主要的问题是,许多商品都有自己独特的统计信息。例如耐用性速度质量等。

如何设计库存物品?

第一个主意

第一个想法(很丑陋)是使用所有类型的对象的所有统计信息创建BIG类

public class InventoryItem {
  //main properties
  public Item item;
  public int quantity;

  //all properties for all other items
  public int durability;
  public int speed;
  public string quality;
  public string magic;
  ...
}

而且我必须根据项目类型填充并将所有未使用的属性设为这很丑陋,我不喜欢这种制作InventoryItem类的方式

第二个主意

就像在我的项目数据库中一样,我可以为每种库存项目类型创建单独的类:InventoryWeaponInventoryPlantInventorySpells等。

而且它看起来比BIG BOSS SINGLE InventoryItem更好

但是我感觉自己做错了。我正在做双重工作。每次我需要创建新类型的对象时,都必须在item数据库中创建新的Item(例如public class Plant : Item),并且必须创建新的InventoryItem(例如public class InventoryPlant : InventoryItem

我的问题是:为库存原型创建对象层次结构的最佳方法?

最好的设计?

还是我做错了?

还是我对每种类型的班级的想法都是正确的库存方式?

斯坦利

“最佳”设计可能无法实现。所有你能做的就是设计一些作品,并尽量做到更好

在确定组合或继承是否合适时,可以考虑是否是a具有a InventoryItem物品吗?还是东西?

如果您设计每种类型的项目彼此独立,那么它们是否共享可以由基类实现的公共属性?这是否使InventoryItem通用性更高,所以您不需要InventoryWeapon等等?

我正在做双重工作。

如何是InventoryWeapon不是不同InventoryItem仅仅是因为它包含不同类型的项目吗?还是有特定于该类型的属性和方法?您可以使用泛型(例如InventoryItem<TItem>)来改善强类型和代码重用吗?是的,您可能最终会遇到类似的耦合类InventoryWeapon,但是如果它的设计比其他设计更好,那么可能值得付出额外的努力。

这些问题只能通过草拟设计,查看哪些有效,哪些无效以及尝试不同的方法来回答。您不会一开始就把它弄对,因此,选择是翻阅您拥有的内容,或者退后一步,做一些不同的事情。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Ansible库存层次结构

来自分类Dev

可靠存储复杂Java对象层次结构的最佳方法是什么?

来自分类Dev

如何在Node.js中为数组/对象数据创建层次结构?

来自分类Dev

检索JS对象原型的最佳方法

来自分类Dev

通用类工厂或层次结构对象的方法

来自分类Dev

递归方法中的Stackoverflow创建层次结构

来自分类Dev

如何以元组为导数创建结构或层次结构?

来自分类Dev

从平面列表的父子对象创建层次结构对象

来自分类Dev

EF加载层次结构的最佳方法(需要所有项目)

来自分类Dev

从路径字符串构建层次结构列表的最佳方法

来自分类Dev

在jQuery / JS中生成复杂的html层次结构的最佳方法

来自分类Dev

如何从原型方法创建对象实例

来自分类Dev

反向对象层次结构

来自分类Dev

将平面对象展开为层次结构

来自分类Dev

TFS 层次结构的最佳实践

来自分类Dev

创建将层次结构存储为逗号分隔值的列

来自分类Dev

在Java级别中为形状类创建层次结构

来自分类Dev

C#继承层次结构中的对象创建

来自分类Dev

创建层次结构每一个类的对象实例

来自分类Dev

创建异常层次结构的正确方法是什么?

来自分类Dev

C#递归方法创建树层次结构

来自分类Dev

jquery从对象创建原型

来自分类Dev

在LINQ中创建层次结构

来自分类Dev

创建数据层次结构并传递

来自分类Dev

在Django中为多个对象动态创建选择表单的最佳方法是什么

来自分类Dev

OO正确性-继承层次结构-谁创建其他对象使用的对象?

来自分类Dev

创建一个表来显示JSON对象的对象层次结构

来自分类Dev

OO正确性-继承层次结构-谁创建其他对象使用的对象?

来自分类Dev

在Ruby中为对象原型添加新方法

Related 相关文章

热门标签

归档