手写简易MVC – IOC

耦合

在软件系统中,层与层之间存在依赖关系,我们称之为耦合。

我们系统架构设计的一个原则是:高内聚低耦合。层内部的组成应该是高度聚合的,而层与层之间的关系应该是低耦合的。

在上一篇中我们引入了三层架构,原代码是这样的:

图片[1]-手写简易MVC – IOC-深吸氧
图片[2]-手写简易MVC – IOC-深吸氧
图片[3]-手写简易MVC – IOC-深吸氧
图片[4]-手写简易MVC – IOC-深吸氧

可以看出Controller层与Service层,Service层与Dao层存在着耦合。

解耦

1. 首先先在applicationContext.xml中配置依赖关系

图片[5]-手写简易MVC – IOC-深吸氧
图片[6]-手写简易MVC – IOC-深吸氧
图片[7]-手写简易MVC – IOC-深吸氧

2. 创建接口BeanFactory,然后创建ClassPathXmlApplicationContext实现BeanFactory并重写getBean方法。

图片[8]-手写简易MVC – IOC-深吸氧
图片[9]-手写简易MVC – IOC-深吸氧

3. 将DispatcherServlet中解析applicationContext.xml获取bean的代码移到ClassPathXmlApplicationContext中。

图片[10]-手写简易MVC – IOC-深吸氧
图片[11]-手写简易MVC – IOC-深吸氧

4. 根据xml配置组装依赖关系

图片[12]-手写简易MVC – IOC-深吸氧

5. 对DispatcherServlet进行代码优化,将原先解析xml获取bean改为从BeanFactory获取。

图片[13]-手写简易MVC – IOC-深吸氧

总结

原先代码中,依赖关系是程序员主动获取的,bean的生命周期由程序员来控制(因为java虚拟机的存在,不用我们考虑)。

代码优化后,程序的依赖关系由容器来帮我注入进去,生命周期的控制权也从程序员转移到了BeanFactory中。

这便是控制反转(IOC)与依赖注入(DI),在后面的Spring框架章节,还会对这一块深入学习。

© 版权声明
THE END
请撒泡尿证明你到此一游
点赞1 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容