Spring.Net应用IOC实现MVC模式,如何通过依赖倒置原则优化学习笔记第3部分?

2026-03-31 06:340阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1409个文字,预计阅读时间需要6分钟。

目前,我们已经基本搭建起了项目的框架,但项目中存在一个问题,那就是在层与层之间使用了接口进行隔离。然而,在实例化接口的时候,还是引入了接口实现类的依赖。如下面的示例所示:'接口实例化依赖'。

到现在,我们已经基本搭建起了项目的框架,但是项目中还存在一个问题,就是尽管层与层之间使用了接口进行隔离,但实例化接口的时候,还是引入了接口实现类的依赖,如下面的代码:

private IUserService _userService; private IUserService UserService { get { return _userService ?? (_userService = new UserService()); } set { _userService = value; } }

面向接口编程,Controller应该只依赖于站点业务层的接口,而不能依赖于具体的实现,否则,就违背了在层之间设置接口的初衷了。

另外,如果上层只依赖于下层的接口,在做单元测试的时候,就可以用Moq,Fakes等Mock工具来按实际需求来模拟接口的实现,就可以灵活的控制接口的返回值来对各种情况进行测试,如果依赖于具体的实现,项目的可测试性将大大减小,不利于进行自动化的单元测试。

要不依赖于具体的实现,就不能使用通常的 T t = new T() 的方式来获得一个类的实例了,需要通过IOC容器来对对象生命周期,依赖关系等进行统一的管理,这里,我们将使用Spring.Net应用IOC。

阅读全文

本文共计1409个文字,预计阅读时间需要6分钟。

目前,我们已经基本搭建起了项目的框架,但项目中存在一个问题,那就是在层与层之间使用了接口进行隔离。然而,在实例化接口的时候,还是引入了接口实现类的依赖。如下面的示例所示:'接口实例化依赖'。

到现在,我们已经基本搭建起了项目的框架,但是项目中还存在一个问题,就是尽管层与层之间使用了接口进行隔离,但实例化接口的时候,还是引入了接口实现类的依赖,如下面的代码:

private IUserService _userService; private IUserService UserService { get { return _userService ?? (_userService = new UserService()); } set { _userService = value; } }

面向接口编程,Controller应该只依赖于站点业务层的接口,而不能依赖于具体的实现,否则,就违背了在层之间设置接口的初衷了。

另外,如果上层只依赖于下层的接口,在做单元测试的时候,就可以用Moq,Fakes等Mock工具来按实际需求来模拟接口的实现,就可以灵活的控制接口的返回值来对各种情况进行测试,如果依赖于具体的实现,项目的可测试性将大大减小,不利于进行自动化的单元测试。

要不依赖于具体的实现,就不能使用通常的 T t = new T() 的方式来获得一个类的实例了,需要通过IOC容器来对对象生命周期,依赖关系等进行统一的管理,这里,我们将使用Spring.Net应用IOC。

阅读全文