【问题标题】:Object modelling problem对象建模问题
【发布时间】:2011-03-06 06:37:25
【问题描述】:

我有 Car 课程,每个课程都有附加物品清单(皮革、ABS、折叠后视镜等...)

public Extra
{
public bool Paid {get;set;}
public string Name {get;set;}
public string Code {get;set;}
}

现在,更好的是:

class Car
{
public Extra Leather {get;set;}
public Extra FoldingMirrors {get;set;}
public Extra Abs {get;set;}
}

或更好:

class Car
{
private List<Extra> _listOfExtras=new List<Extra>

public List<Extra> ListOfExtras
{
...
}
}

还有最糟糕的部分:

我的 winforms 应用程序离线工作,每个月有一个为我发送数据。

我必须在此应用程序中保留可用的(每个汽车用户选择附加)附加列表,所以我认为更好的方法是选项一。

如何在我的应用程序中保存这个附加列表?它每月只连接一次网络服务。

【问题讨论】:

  • 你能解决一些拼写问题,并描述你关于保存的最后要求吗?

标签: c# modeling


【解决方案1】:

就个人而言(看到这是主观的),我会为 Extra 使用接口(例如 IExtra)。我还会选择第二个“选项”,即在 Car 类中包含附加内容的列表/字典。

如果需要,可以像在选项 1 中一样公开它们,只需在列表/字典中查找值即可。

【讨论】:

  • 好的,但是如何在我的应用程序中保存这个附加列表?它每月只连接一次网络服务
【解决方案2】:

额外的列表或字典(更容易访问)会更灵活。

这意味着在汽车中添加和/或删除附加组件时,您不必修改 Car 类,如果每个组件都被明确添加,您就必须这样做。

有多种方法可以在本地存储列表。您可以序列化为一个文件 - 纯文本或 XML,这会更好,因为您有为您执行序列化的类,或者您可以将其保存在本地数据库中。

【讨论】:

  • 好的,但是如何在我的应用程序中保存这个附加列表?它每月只连接一次网络服务
  • @phenevo - 有多种方法可以在本地存储列表。您可以序列化为文件 - 纯文本或更好的 XML,或者您可以将其保存在本地数据库中。
【解决方案3】:

我会将其存储在Dictionary&lt;string, Extra&gt; 中。您不希望相同的附加内容出现多次......或者至少为它们支付多次:-)

另外,Extra 应该是一个接口(或者至少是一个抽象类)..

至于存储,您可以将 Car 类序列化为 XML。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 2023-01-02
    • 1970-01-01
    相关资源
    最近更新 更多