数据访问层中的静态方法

4

我在数据访问层(DAL)中使用了很多静态方法,比如:

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

但我发现有些开发人员不喜欢在DAL中使用静态方法。我只需要一些理由来使用或不使用DAL中的静态方法。

谢谢

Tony

3个回答

3

从纯粹主义者的角度来看,这违反了各种最佳实践(比如依赖于实现、紧密耦合、不透明的依赖等)。我本人也会这样说,但最近我倾向于采用更简单的解决方案,而不是过多地涉足“企业级”功能和流行语。因此,如果您觉得这样的代码可以接受,如果这种架构允许快速开发并且可测试,并且最重要的是解决了您的业务问题——那就没问题。


我在另一个项目中再次发现了相同的问题。我认为静态DAL违反了面向对象编程的基本思想,并且不具有良好的可扩展性。我还认为添加IOC容器可以避免这种静态DAL的问题。 - Tony Bao

1
如果非要挑出一个不使用静态方法的理由,那就是它限制了你编写单元测试的能力。例如,为您的数据访问层(DAL)创建模拟对象将更加困难,因为没有实际接口可以编写代码,只有一堆静态方法。这进一步限制了您,如果/当您决定采用需要接口来支持诸如IoC、依赖注入等事物的框架时。

这也是一个非常好的观点,今天我使用IOC时才发现了这个问题。 - Tony Bao

0

那是“工作单元”(Unit of Work),只是静态的,不是吗?


我们需要从数据库中读取客户端名称,你可以说它是静态的。但即使是实例调用最终也会由CLR转换为静态调用。不确定何时使用静态调用和何时使用实例调用。 - Tony Bao
@Tony:你的数据源是什么?ORM?还是其他的东西? - abatishchev
数据保存在SQL服务器中,并使用绑定的数据表。没有使用ORM。 - Tony Bao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接