【发布时间】:2014-01-23 15:59:55
【问题描述】:
我有一个设计问题,
基本上,我有一个名为Currency的类
public class Currency
{
public int ID;
public string Name;
public int RoundingValue;
public Currency() { }
public void GetData() { // Some SQL query code // }
}
有时需要获取系统中存在的所有货币来做出有关汇率、支付兼容性等方面的决定。
我看到了两种方法(获取数据):
1) 在Currency 类中创建一个静态方法来执行此操作。这包括在其中创建 SQL 连接实例(不确定这样做是否正确),创建 List<Currency> 实例来存储集合,然后将其传递到类之外。
2) 通过扩展Collections.BaseCollection类创建类的集合,创建它的实例,执行相同的SQL查询,然后返回结果。但该类不会提供额外的功能,而且可能永远不会(Currency 本身也是如此。
在其他情况下,我使用扩展集合,因为它们需要根据集合的内容存储额外的信息。
但在这种情况下,不会创建任何附加信息或提供任何功能。
那么,什么样的设计更实用呢? 如果有这些解决方案的替代方案,我会很高兴听到它。
【问题讨论】:
-
您是否考虑过使用factory design pattern。我认为货币的类型变化不大,只有它所代表的金额。这样你就可以做 Currency.GetEuro() 和/或 Currency.GetUSD() 等等。
-
@MarvinBrouwer 不使用工厂模式的原因是,事先不知道系统中存在哪些货币。
-
@gcores 数据库细节,其中数据主要通过 3rd 方 SP 控制。
标签: c# class collections static