`

IOC,AOP浅谈

    博客分类:
  • JAVA
阅读更多
 
看了<<spring in action>>以后收获真的很大,刚开始看第一遍有些概念就没看懂,比如说IOC和AOP,这不我又看了第二遍,有时候书多读几遍就有几遍不同的收获,我就把自己的收获拿来与大家一起分享下,也许我的想法有点太片面化,希望指导.所以在此也就浅谈一下好了.
IOC概念的精髓:
我的理解是包括两个部分.
一:面向接口编程,而不是面向类编程
真正和外界交互都是通过接口来进行的,内部的交互也是接口与接口来进行的,这样外部不知道具体的实现细节,当然他也不需要知道.内部实现类的改变不会影响外部接口与外界的交互,降低了耦合度.内部之间各功能部分的调用也是用接口,这样也降低了内部各部分的耦合度.耦合度降低了方便修改与测试.
面向接口编程的概念在那本很经典的书<<设计模式>>中早已经提出了,只是很少引起人们的重视而已.面向接口编程的提出很大程度上对降低程序的耦合度很有帮助.
二:依赖注入
当然依赖注入是spring IOC中很核心的重点了.单单通过字面意思,我们就应该明白原先的依赖是需要在程序中去完成,而现在依赖可以不在程序中完成,通过我们的配置,容器会自动将依赖添加进去的.这在很大程度上方便了程序的编写,同时我觉得通过配置文件可以起到导航的作用.就像STRUTS的配置文件一样.这种注入很灵活方便.关于依赖注入我还在消化,因为应用的不多,所以其他的发现还没有.
 
AOP概念的精髓:(这个概念相对抽象就把我理解的说出来好了)
一:面向切面编程
当然你会觉得我是在搬书上的东西,不过对切面的理解我是看了其他的书才有所理解,至少才看这个概念还是不理解的.如果你明白了切面,明白了切面编程的重要性,我想你就应该明白了为什么AOP会这样受欢迎,他很好的解决了代码重用的问题,至少切面是可以重用的,这样降低了编码量,其次,他也是降低了各功能模块的耦合度,业务模块和切面模块(暂且这样叫吧,算是各切面的功能模块吧)可以单独的维护,业务模块并不知道切面模块的存在,这样真正的项目关心的重点就完全放在业务上了,不会为切面模块而浪费很多时间.提高了效率.
二:支持事物声明调用
开发过EJB的人都知道,在EJB里的事物声明调用比较麻烦,而且事物不能脱离EJB容器而存在.而spring很好的解决了这个问题,因为他是面向切面编程,他对事物调用的支持非常好,可以在需要调用的地方做个声明这样事物就被调用了.他不需要EJB容器,而且使用方便灵活.
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics