DAL课程应该公开吗?

时间:2011-03-15 14:26:26

标签: c# class architecture interface

假设我有一个多个应用程序用来访问相同数据的DAL。 DAL定义了自己的类和接口来处理这些数据,但使用DAL的应用程序是应该使用这些类,还是只使用接口?

另一种方式;应该是:

List<Product> products = MyDAL.Repository.GetProducts();

或:

List<IProduct> products = MyDAL.Repository.GetProducts();

使用DAL的每个应用程序是否必须为产品创建自己的实现细节是好还是坏?

3 个答案:

答案 0 :(得分:0)

这里有太多问题可以确定最佳方法。

如果这些应用程序可以重用DAL中的类提供的附加功能,那么我会说完全重用它们。

以“产品”为例。如果DAL的Product定义与应用程序所需的定义非常接近或相同,那么重用是最好的选择。


如果应用程序明确地不想要类提供的功能,而是想要提供自己的实现,那么只需使用接口。

再次,看看“产品”:如果应用程序有自己的Product定义,可能还有其他属性和方法,那么他们应该实现接口。


这是一个关于如何使用相关课程的问题。

答案 1 :(得分:0)

返回接口更好,但是您需要GetProducts()来了解正确查询数据存储的那些实现。您可能希望使用IOC框架。

答案 2 :(得分:0)

传递接口而不是类是一个(非常好)的事情。让你的DAL类私有是一个不同的(并不一定是好的)事情。

例如,如果其中一个使用您的DAL的应用程序想要稍微改变Product的行为怎么办?如果它是私有的,你怎么能将你的原始类子类化或装饰?

假设您的某个应用是一个Web应用程序,需要将产品的图像存储为网址而不是文件路径?或者在产品上添加缓存,日志记录或其他内容?