Aop中动态横切与静态横切
来源:互联网 发布:dnf闪光网络中断 编辑:程序博客网 时间:2024/05/13 13:54
什么是动态横切,静态横切?动态和静态的区别在哪?
首先,横切是面向方面编程的专用名词;大概是指在对象中插入新的职责;就好像一面包,我们把它从中间切开,放入点肉类,就成了汉堡,吃起来味道就不一样了;
横切有两种,动态横切与静态横切;经常我们用到动态横切就是指方法拦截,而静态就是MIXIN;
动态横切是通过切入点(pointcut)和链接点(joint point)在一个方面(aspect)中的创建行为的过程;方面(aspect)定义了所有的链接点,切入点以及通知(advice),以便把需要切入的职责(interweave)注入到原来的对象中;
(名词解释:链接点(joint point)指需要我们要注入职责的地方;切入点(pointcut)确定具体植入位置,在职责前植入还是在后植入;通知(advice)也就拦截器了,就是你需要现在这些职责的代码;)
静态横切是通过在不修改原有职责的基础上增加新的职责;以往我们用过类的继承来实现,但继承是种强依赖关系,怎么让他们松藕,这个时候我们用静态横切,用mixin;
比如:
class zoo {
//职责
public string 发声(){.....}
}
class bird : zoo {
pubic string 飞行 (){.......}
}
class newbird{
pubic string 飞行 (){.......}
}
如果我们使用minix,,在定义bird的时候 ,我们就不需要继承zoo了 。。我们只需要增加配置:
aspect newbirdAspect for newbird
include zoo
end
那么我们在运行时候就有:
AspectLanguageEngineBuilder b = new AspectLanguageEngineBuilder (配置文件);
AspectEngine aEngine = b.build();
newbird obj = aEngine .WrapClass(typeof(newbird )) as newbird ;
obj .飞行(); //这里就是MIXIN的功劳了
obj .发声();
首先,横切是面向方面编程的专用名词;大概是指在对象中插入新的职责;就好像一面包,我们把它从中间切开,放入点肉类,就成了汉堡,吃起来味道就不一样了;
横切有两种,动态横切与静态横切;经常我们用到动态横切就是指方法拦截,而静态就是MIXIN;
动态横切是通过切入点(pointcut)和链接点(joint point)在一个方面(aspect)中的创建行为的过程;方面(aspect)定义了所有的链接点,切入点以及通知(advice),以便把需要切入的职责(interweave)注入到原来的对象中;
(名词解释:链接点(joint point)指需要我们要注入职责的地方;切入点(pointcut)确定具体植入位置,在职责前植入还是在后植入;通知(advice)也就拦截器了,就是你需要现在这些职责的代码;)
静态横切是通过在不修改原有职责的基础上增加新的职责;以往我们用过类的继承来实现,但继承是种强依赖关系,怎么让他们松藕,这个时候我们用静态横切,用mixin;
比如:
class zoo {
//职责
public string 发声(){.....}
}
class bird : zoo {
pubic string 飞行 (){.......}
}
class newbird{
pubic string 飞行 (){.......}
}
如果我们使用minix,,在定义bird的时候 ,我们就不需要继承zoo了 。。我们只需要增加配置:
aspect newbirdAspect for newbird
include zoo
end
那么我们在运行时候就有:
AspectLanguageEngineBuilder b = new AspectLanguageEngineBuilder (配置文件);
AspectEngine aEngine = b.build();
newbird obj = aEngine .WrapClass(typeof(newbird )) as newbird ;
obj .飞行(); //这里就是MIXIN的功劳了
obj .发声();
- Aop中动态横切与静态横切
- Spring AOP 静态代理与动态代理
- 静态代理、JDK与CGLIB动态代理、AOP+IoC
- 动态代理与AOP
- 动态代理与AOP
- 动态代理与AOP
- jsp中静态包含与动态包含
- jsp中静态include与动态include
- JAVA中静态数组与动态数组
- JAVA中静态数组与动态数组
- JAVA中静态数组与动态数组
- Java中静态数组与动态数组
- Java中静态数组与动态数组
- JAVA中静态数组与动态数组
- java中动态绑定与静态绑定
- c中动态与静态二维数组
- jsp 中 静态包含 与 动态包含
- java中动态绑定与静态绑定
- 特殊的数组排序问题
- 关于创建SQL数据库脚本没有默认值的情况
- Myclipse9 、10 安装svn方法
- 设计模式笔记(11 OBSERVER & STATE)
- JMS发送和接收实例-发布/订阅模式
- Aop中动态横切与静态横切
- 利用栈做行编辑器
- java容器类--------Collection接口解析(一)
- 广东徐闻3名官员参加黑社会组织充当保护伞获刑-黑社会-官匪勾结-黑社会保护伞
- vc操作word入门(一)
- 【Spring MVC】完成Spring 3 MVC的第一个实例
- 通过WebDAV协议访问的SVN服务器的搭建
- 如何在C#中利用GDI画树状图(非Treeview)
- 十月,遇见