发表于: 2016-09-09 00:05:20
3 2241
回顾了一下前两天的日报,感觉流水账的风格对于学习帮助不大,还是换成总结概括+记录要点的风格比较好。
今天开始要先学习Spring框架,这一部份的知识比较重要,理解框架的背后的设计思想,要比单纯地学会使用有价值得多。今天空闲时间有限,只能简单看一下Spring的设计思想了。
Spring有两个重要的设计思想,分别是IOC(Inversion of Control-控制反转)和AOP(Aspect Oriented Programming-面向切面编程)。
今天就先总结一下自己了解到的IOC。
应用情景:
对象之间的依赖关系比较复杂,比如A会被B、C、D、E用到,最原始的做法就是在B、C、D、E里直接new一个A类对象出来。这种方法很简单,但是当我们因为业务变动想要更换A的时候,就要改动很多地方了。但是如果在中间加一层中转站,那就不一样了。其它对象接收到的A,是通过中转站传递来的。那么我们在中转站new一个A类对象,把它赋值给一个接口引用或者抽象父类引用后传递给B、C、D、E。在这种情况下,我们要更换A就很简单,只要在中转站里更换就行了,只要更换上来的类也实现了那个接口或者继承了抽象父类即可。
举个更具体的例子。对于一个服务,可以写成一个接口,提供多个方法。而方法的具体实现,则由这个接口的实现类来完成。接口是固定的,但一个接口可以有多个实现类。对于那些用到该服务的类来说,它们只关心这个接口,而不关心接口的实现。强行在那些类中创建接口的实现类对象,就显得编码很硬,想要换一个实现类就很麻烦。而有了IOC容器这个中转站,一切就不一样了。只要用IOC容器来创建实现类的对象,让需要使用的类来接收,更换实现类时,只需要在IOC容器里更换即可。
这个思想的确非常的巧妙,但有个问题:该如何在Java中实现?强大的反射机制似乎可以帮助解决这个问题,只是时间已晚,留待明天再收集资料和思考吧。
明天的任务:弄清楚IOC的Java实现方式,以及AOP的基本思想。
收获:了解了IOC的基本思想。
评论