c# - DAL 类(class)应该公开吗?

标签 c# class architecture interface

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

另一种方式;应该是:

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

或:

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

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

最佳答案

传递接口(interface)而不是类是一件(非常好的)事情。将 DAL 类设为私有(private)是另一回事(不一定是好事)。

例如,如果使用您的 DAL 的应用程序之一想要稍微更改 Product 的行为怎么办?如果原始类是私有(private)的,您如何对其进行子类化或装饰?

假设您的一个应用程序是 Web 应用程序,需要将产品图像存储为 URL 而不是文件路径?或者在 Product 之上添加缓存、日志记录或其他东西?

关于c# - DAL 类(class)应该公开吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5313191/

相关文章:

c# - Windows 的 C# 程序是否可以在没有修改的情况下在 Mono 下的 Ubuntu 中运行?

C# 将列表加载到文本框 WinForms

c++ - 如何在另一个文件的类中声明一个函数

architecture - 在 DDD 架构中,我在哪里保留帮助类?

mysql - 处理随机 ID 存储

c# - 3 层架构 v. 3 服务器架构

c# - 为什么我们不能在 foreach 循环中更改迭代变量

c# - 从 ActionFilterAttribute 返回带有模型的 View

java - 自定义 Java 类加载器和内部类

javascript - JSON 到 Javascript 类