假设我有一个多个应用程序用来访问相同数据的DAL。 DAL定义了自己的类和接口来处理这些数据,但使用DAL的应用程序是应该使用这些类,还是只使用接口?
另一种方式;应该是:
List<Product> products = MyDAL.Repository.GetProducts();
或:
List<IProduct> products = MyDAL.Repository.GetProducts();
使用DAL的每个应用程序是否必须为产品创建自己的实现细节是好还是坏?
答案 0 :(得分:0)
这里有太多问题可以确定最佳方法。
如果这些应用程序可以重用DAL中的类提供的附加功能,那么我会说完全重用它们。
以“产品”为例。如果DAL的Product定义与应用程序所需的定义非常接近或相同,那么重用是最好的选择。
如果应用程序明确地不想要类提供的功能,而是想要提供自己的实现,那么只需使用接口。
再次,看看“产品”:如果应用程序有自己的Product定义,可能还有其他属性和方法,那么他们应该实现接口。
这是一个关于如何使用相关课程的问题。
答案 1 :(得分:0)
返回接口更好,但是您需要GetProducts()来了解正确查询数据存储的那些实现。您可能希望使用IOC框架。
答案 2 :(得分:0)
传递接口而不是类是一个(非常好)的事情。让你的DAL类私有是一个不同的(并不一定是好的)事情。
例如,如果其中一个使用您的DAL的应用程序想要稍微改变Product的行为怎么办?如果它是私有的,你怎么能将你的原始类子类化或装饰?
假设您的某个应用是一个Web应用程序,需要将产品的图像存储为网址而不是文件路径?或者在产品上添加缓存,日志记录或其他内容?