2011-04-10 120 views
4

我已经使用了很多的数据访问层(DAL),如静态方法:静态方法

public static DataTable GetClientNames() 
{ 
    return CommonDAL.GetDataTable("...."); 
} 

但我发现,一些开发商不喜欢里面的静态方法的想法DAL。我只需要一些理由在DAL中使用或不使用静态方法。

感谢

托尼

回答

3

从纯粹主义者的角度来看,这违反了各种最佳实践(比如,依赖于实现,紧耦合的,不透明的相关性等)。我自己也会这样说,但最近我倾向于采用更简单的解决方案,而不会在“企业化”功能和流行语中潜水太多。因此,如果您可以像这样编写代码就可以了,如果这种架构允许快速开发并且可以测试,并且最重要的是,可以解决您的业务问题 - 它就好。

+0

我在另一个项目中再次发现相同的问题。我认为静态DAL是反对OOP的基本思想,它不是很好的规模。我也认为添加IOC容器可以避免这种静态DAL。 – 2015-07-20 19:56:52

1

如果我不得不选择一个不使用静态方法的原因,那将会限制你编写单元测试的能力。例如,为你的DAL创建模拟将会变得更加困难,因为没有一个实际的接口来编码,只是一堆静态方法。如果/当您决定采用需要接口来支持IoC,依赖注入等的框架时,这会进一步限制您。

+0

这也是非常好的一点,我今天刚刚与IOC发现了这个问题。 – 2015-07-20 19:57:54

0

这就是Unit of Work,只是静态的,不是吗?

+0

我们需要从DB读取客户端名称,并且可以说它是静态的。但即使实例调用最终由CLR静态调用。不知道何时使用静态调用以及何时使用实例调用。 – 2011-04-11 16:03:35

+0

@Tony:你的数据来源是什么? ORM?还有别的吗? – abatishchev 2011-04-11 19:26:21

+0

数据保存在SQL服务器中并绑定使用的数据表。没有使用ORM。 – 2011-04-12 14:25:00