c# - 为什么我们的项目需要接口(interface)层/抽象类?

标签 c# asp.net asp.net-mvc asp.net-mvc-3 c#-4.0

<分区>

我们通常在项目中使用抽象函数/接口(interface)。为什么真的需要它?为什么我们不能只使用业务逻辑层、数据访问层和表示层

表示层中的函数:

abc();

业务逻辑层的功能:

 public void abc()
    {
      //Preparing the list
    }

数据访问层中的函数:

public abstract void abc();

在数据访问SQLServer层的作用:

 public override void abc()
    {
       //Connection with database
    }

问题是:为什么需要数据访问层?

最佳答案

在我看来,理解这一点的最简单方法是对 DataLayer 进行抽象。

您已经设置了一个函数来从 xml 文件中检索数据。但有一天您的产品横向扩展,xml 不足以作为数据存储。所以你传递给一些嵌入式数据库:sqlite。但是有一天您需要在某些企业环境中重用您的库。所以现在您需要开发对sqlserveroraclewebservice...的访问。在所有这些更改中,您将需要更改不仅实际访问数据的代码,还有实际使用它的代码。那些已经使用了多年的代码又如何呢?您的第一个 xml 客户端数据访问并对此感到满意?反向兼容性如何?

如果不能直接解决大部分问题,则具有抽象,但绝对可以使您的应用程序可伸缩并且更能​​抵抗变化,在我们的世界中,这种变化有时发生得太频繁了。

关于c# - 为什么我们的项目需要接口(interface)层/抽象类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9702032/

相关文章:

c# - 如何在 C# 中检测 NTFS 挂载文件夹?

c# - 为带有子文件夹的 ASP.NET MVC 区域路由生成 URL

c# - 为什么 UserManage.CreateAsync 在使用重复用户名时抛出 EntityValidationError 而不是返回失败结果?

c# - 需要从字符串拆分中将两个值放入数组中

c# - 将一个列表添加到另一个为空或不为空的列表

c# - 我可以检查一个变量是否可以转换为指定的类型吗?

c# - foreach 循环中的转换问题

c# - 一起使用 ELMAH 和 URLRewritingNet

c# - 如何授权用户使用 asp.net Identity 2.0 仅查看自己的记录

c# - 过程或函数 SpAddDepartment 指定的参数过多