码迷,mamicode.com
首页 > 编程语言 > 详细

Spring学习指南-第二章-Spring框架基础

时间:2019-11-23 09:17:09      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:orm   元素   png   编程   fixed   创建   引用   sda   应用   

第二章 Spring框架基础

面向接口编程的设计方法

? 在上一章中,我们看到了一个依赖于其他类的POJO类包含了对其依赖项的具体类的引用。例如,FixedDepositController 类包含 对 FixedDepositService 类的引用,FixedDepositService 类包含对 FixedDepositDao 类的引用。如果这个依赖于其他类的类直接引用其依赖项的类,则会导致类之间的紧密耦合。这意味着如果要替换其依赖项的其他实现,则需要更改这个依赖于其他类的类本身。

? 我们知道 Java 接口定义了其实现类应遵循的契约。因此,如果一个类依赖于其依赖项实现的接口,那么当替换不同的依赖项实现时,类不需要改变。一个类依赖于由其依赖项所实现的接口的应用程序设计方法称为 "面向接口编程"。这种设计方法使得依赖类和依赖项之间松耦合。由依赖项类实现的接口称为依赖接口。

? 和 ”面向类编程“ 相比,”面向接口编程“ 是更加良好设计实践,下图表明 ABean 类依赖于 BBean 接口而不是 BBeanImpl 类(BBean接口的实现)。

? 技术图片

?

下图中,FixedDepositJdbcDao 单纯的使用 JDBC, 而 FixedDepositHibernateDao 使用 Hibernate ORM 进行数据库交互。如果 FixedDepositService 直接依赖于 FixedDepositJdbcDao 或 FixedDepositHibernateDao,当需要切换与数据库交互的策略时,则需要在 FixedDepositService 类中进行必要的更改。FixedDepositService 依赖于 FixedDepositJdbcDao 和 FixedDepositHibernateDao 类实现 FixedDepositDao 接口(依赖接口)。现在,通过使用单纯的 JDBC 或 Hibernate ORM 框架,你可以向 FixedDepositService 实例提供 FixedDepositJdbcDao 或 FixedDepositHibernateDao实例。

? 技术图片

? 由于 FixedDepositService 依赖于 FixedDepositDao 接口,因此将来可以支持其他数据库交互策略。如果决定使用iBATIS(mybaits)持久性框架进行数据库交互,那么可以使用IBATIS,而不需要对FixedDepositService 类进行任何更改,只需要创建一个 FixedDepositDao 接口的 FixedDepositIbatisDao 类,并将 FixedDepositIbatisDao 的实例提供给 FixedDepositService 实例。

? 现在来看看 ”面向接口编程“ 是如何提高依赖类的可测试性的。

提高依赖类的可测试性

? 在上图中,FixedDepositSerivce 类保留了对 FixedDepositDao 接口的引用。FixedDepositJdbcDao 和 FixedDepositHibernateDao 是 FixedDepositDao 接口的具体实现类。现在,为了简化 FixedDepositService 类的单元测试,我们可以把原来对具体数据库操作的实现去掉,用一个实现了 FixedDepositDao 接口但是不需要数据库的代码来代替。

? 如果 FixedDepositService 类直接引用 FixedDepositJdbcDao 或 FixeDepositHibernateDao 类,那么测试 FixedDepositService 类则需要设置数据库以进行测试。这表明通过对依赖接口的模拟依赖类实现,你可以减少针对单元测试的基础设施设置的工作量。

? 现在来看看 Spring 如何在应用程序中使用 “面向接口编程” 的设计方法,你需要执行以下操作:

? 1.创建引用依赖接口,而不是依赖项的具体实现的 bean 类;

? 2.定义 元素,并在元素中指定所要注入依赖bean的依赖项的具体实现类。

使用 “面向接口编程” 设计方法的MyBank应用程序

未完,待续......

Spring学习指南-第二章-Spring框架基础

标签:orm   元素   png   编程   fixed   创建   引用   sda   应用   

原文地址:https://www.cnblogs.com/train99999/p/11915113.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!