Spring系列(6)---总结(完)

来源:互联网 发布:淘宝介入的后果 编辑:程序博客网 时间:2024/06/05 17:43

下面我们来看看IOC和AOP的一些优劣:

IOC:

优势:1)可以解耦一些逻辑关系,使得这种关系更加松散,而且可以在不重新编译程序的情况下通过配置信息的更改达到更改程序逻辑的目的;2)可以大量减少一些中间(比如典型的创建逻辑)类;3)带来了很大的灵活性和可扩展性。

劣势:1)只适合逻辑比较简单,而且形式比较统一,量比较大的地方,对于复杂的逻辑使用配置文件完成,反而会增加系统的复杂度和难度;2)会带来一些性能的损失,增加系统的复杂度;3)会使得程序构成复杂,整体性降低,有的情况下,如果配置文件比较复杂,比较大或者小而多,那么配置文件本身的可维护性也会成为一个问题;

 

AOP:

优势:1)为解耦和简化类之间的关系,提供了一种新的手段;(从系统最终角度来看,只是将直接依赖转换成了间接依赖)2)为类增加一些行为责任提供了一种比较好的方案,可以大量减少这种代理类的手工维护量;(对于整个系统来说,实际上这种方式最终是增加了很多代理类,而且这其实也不能算是AOP的功劳,而是动态代理类生成的好处)3)可以使得系统中的类的责任更加单一,这一点得益于代理模式的使用,使得目标类方法责任更加单一,不需要事先知道这些责任(比如日志,权限检查等),可以在后面根据需要动态的增加这些责任。

劣势:1)虽然简化了系统类的关系复杂度,但增加了程序逻辑的复杂度;2)由于切入点和可能的多次调用,以及代理类的动态生成,增加了系统的调试难度,另外如果切入点的处理逻辑不够强大和完善,也会降低系统的强壮性。3)只能应用一些简单而且相对比较独立的附加责任,如果涉及到复杂责任的增加,比如附加责任需要知道更多的目标类逻辑,就需要定义很多用于目标类的接口来让附加责任类知道目标类的逻辑,这种情况下类之间的复杂关系并不会减少,反而会增加,同时还会增加系统设计的难度(利用元属性和反射可以解决部分)。

A)Spring是一种应用框架,而不是一种基础技术,因此包治百病不太现实,如果要使用这些框架,最好还是要知道其优劣,选型之前可以多多看其优点,但选型之后,还是需要认真对待它的劣势,要在实际上尽量避免它。IOC是一种技术,用的时候需要有度。
B)对于Spring等这类框架来说,小型项目其实不太适合,因为太重,但如果是做产品,最好还是不要用,借鉴其某些思想足够。
C)至于Spring中的事务,同步,分布,线程安全等技术都属于比较基本的技术问题,可以单独来讲。

 

 总结:单个的技术点其实都不是很难,但要将这些单个的技术点综合应用到实际项目中去,除了需要我们透彻的了解这些技术点外,更重要的是需要我们掌握一些分析和解决问题的方法,并在实践中不断尝试和总结。另外,各种语言或平台之间的技术差异其实越来越小,很多东西都需要我们跳出语言本身来思考这些技术问题。毕竟编程语言或平台只是一种工具。

 

后记:由于本人对Spring.Net和NHibernate 的了解和学习也就2周左右的时间,很多理解和看法可能都比较片面,如果写得不好或者不正确的地方,希望大家能指正和赐教!

 

原创粉丝点击