【问题标题】:Could you please suggest better design?你能建议更好的设计吗?
【发布时间】:2010-12-21 02:54:39
【问题描述】:

以下是场景。

我有一个叫做Domain 的东西,其中可以有多个States(Statekey-Statevalue 对)。 同一个 StateKey 可以存在于多个域中,但具有不同的 StateValue。

例如名为“EconomicCapital”的 StateKey 可能出现在“England”、“America”等域中,其值分别为“London”、“Washington”。

与这些对应的类在公共库中,可以根据需要在客户端或服务端使用。

我有一个可以选择特定域的 winform 应用程序。在任何字符串中,无论我遇到任何 StateKey,我都希望将其替换为所选域的 StateValue。

我能想到以下设计:

  1. 建立组合关系。域可以由国家组成。因此,当我想要任何 StateKey 的 StateValue 时,我可以获取所需域的对象,并可以从其中组成的 States 集合中提取 StateKey。

但是可能会有大量使用 StateKey 的实例,我认为这种方法不是很好,因为它需要从域集合中查找 Domain 对象并遍历其 State 集合以找到特定的键。

  1. 维护一个静态集合,可以保存不同域中的所有 StateKey。当我想要特定的 StateKey 时,我可以简单地在这个集合中查找。

您能告诉我哪种方法更合适吗?会有其他方法/设计吗?

(如果逻辑是在服务端实现的;不是只有一个winform应用程序,而是许多这样的应用程序都可以访问它。)

【问题讨论】:

  • 你应该选择一个更好的问题标题。当前的没有说明您的问题。
  • @Diego:我同意你的看法。但是我的问题太长了,以至于我无法形成一个单行标题来简要说明我在寻找什么。

标签: c# design-patterns


【解决方案1】:

类似的东西呢

Dictionary<domain, Dictionary<statekey, statevalue>()

然后您可以从域中找到键值对,并从中获取值.... 还是我在您的问题中遗漏了什么?

【讨论】:

  • 这是我需要的东西。我的问题是'在域中组成这样的集合会更好还是有一些静态集合更好?
  • 我不确定我是否理解您的问题...您指的是每次访问字典时加载/生成一组键值对是否更好(“在域中组成”)或预加载/预计算您的键值对并在整个应用程序中使用相同的列表(“静态集合”)?这取决于以下因素:有多少数据,您访问数据的次数,计算/加载数据的难度?你有任何性能限制...
  • 我同意没有明确的答案,除非您对您在 cmets 中讨论的要点有明确的答案。由于值在我的应用程序生命周期中将保持不变,并且我需要在集合中查找很多次,因此静态集合更适合我。感谢您的回复和时间。
【解决方案2】:

这只是一个“思想项目”/家庭作业吗? Domain > State > StateValue 关系必须某事才能成为一个类并使用设计模式。这似乎只是一组查找操作。使用 LINQ 或数据库可能会更好。

【讨论】:

  • Brian:这不是家庭作业或思想项目。我正在向几年前由其他人编写的现有代码添加一个新功能。
猜你喜欢
  • 1970-01-01
  • 2012-07-19
  • 2013-08-15
  • 2010-09-08
  • 1970-01-01
  • 1970-01-01
  • 2011-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多