标签:aop
集合大家基本都有个认识吧,如:JDK中的List, Set, Map等,都是很好的集合。容器和集合有什么不同呢,我个人认为:
容器应提供公共的服务
容器中的服务可以操作容器中所有对象
容器中选择某个对象可以操作对象的属性和方法
详情请看下图
空白处右键容器出现容器提供的服务,容器对象右键出现对象的属性或方法。最形象的就是我们Wind的资源管理器的模型。
有了容器的基本概念后,再看看看我们最普通的开发方式。一个系统开发业务颗粒,免不了要有日志,事务一些的参杂。最普通的写法我们是怎么做的呢
常见方式
多个地方包含相同代码的软件
以上写法相信大家已经发现不足之处了。若要修改,则需要打开3各地方进行修改,不能做到一处修改。
为了解决这个问题,我们通常会采用将如图 1 所示的相同代码部分定义成一个方法,然后在 3个代码段中分别调用该方法即可。在这种方式下,软件系统的结构如图 2 所示。
对象引用形式
这种方法基本可以这样做能够解决大部分应用场景。但是还是没有脱离了对封装对象的依赖。
AOP方式
这时候AOP的一种思想可以解决该问题
通常的AOP这样写
若是再来一个切面颗粒,代码首先是要修改的,其次还要进行相关配置,还是有影响的
经过一些修改和设计,我们将 AOP 与切面颗粒进行隔离,这样就可以达到切面颗粒可以随时的增删,AOP只进行相关的一些配置,代码无需修改,这样达到了热部署的效果,效果图如下3
最左边为业务容器,右边为切入颗粒容器,中间为AOP集合,存放的是业务域切面容器的切入关系.若要增加切面颗粒,只要将切面颗粒配置到切面容器中。
在AOP集合中进行相关配置,或默认配置即可达到切入效果。
对于这块的容器和AOP组合的效果,是经过了多次的设计和修改,形成最终版本,使用一个AOP容器管理了多个切面颗粒,为多个业务颗粒进行增强。
标签:aop
原文地址:http://blog.csdn.net/han_yankun2009/article/details/46135993