我应该为DataAccess常用运算符使用静态方法吗?

时间:2009-07-13 19:43:54

标签: c# ado.net static-methods

我没有使用hibernate,这根本不是一个有效的选择。我开发了一个基于ADO.NET的框架。该框架具有每个数据库实体的默认运算符。

例如,数据访问层具有以下默认运算符:

Insert
Update
Delete
Get
GetAll

要访问此方法,我们可以使用以下示例代码:

DataAccess.Order daoOrder;

Entity.Order entityOrder;
DataAccess.Order daoOrder;

entityOrder = new Entity.Order();
entityOrder.ID = 1090;

daoOrder = new DataAccess.Order();
daoOrder.Insert(entityOrder);

我在考虑使用静态方法,所以代码很简单:

Entity.Order entityOrder;

entityOrder = new Entity.Order();
entityOrder.ID = 1090;

DataAccess.Order.Insert(entityOrder);

假设系统有30个表和30个实体。我们需要30个DataAccess对象作为静态对象运行。 这种静态结构可以节省一些处理器周期并节省一些内存,因为垃圾收集器的成本更低。

我应该以这种方式为Business和DataAccess常用运算符使用静态方法吗? 你能谈谈这种方法的优缺点吗? (我的意思是,记忆,表现......)

2 个答案:

答案 0 :(得分:3)

上面提到的两个选项之间的性能差异实际上是不存在的。我会考虑您可以管理的最干净,最灵活的设计,考虑您的域模型和其他业务需求,然后在您启动并运行后担心性能调整;在构建系统之前,不要试着再次猜测瓶颈。

请参阅Greg Beech的这篇文章,了解static versus instance performance ..

的分析

他的结论:

  

在调用一个方法20亿次时,你可以通过使其保持静态来节省大约5ms,这对于每个方法调用几乎都没有节省

答案 1 :(得分:1)

如果在此类中使用静态方法,则与其交互的每个对象都将与其高度耦合。事实上,您的代码不是很容易测试的。如果我是你,我会避免使用静态方法/类以及单身人士。除非你不想试驾你的应用程序。