Aop回调和事件回调都允许在特定的情况下执行用户指定的代码,这种情况通常涉及状态更改或活动的开始或结束。两种方式的区别就在代码指定的这个环节上面。
无论是使用aop机制还是事件机制,要想对象在特定情况下执行指定的代码,编程人员都必须首先通知对象要执行什么代码,同时告诉对象在什么情况下执行。在代码指定这个环节上,aop是作用于定义层面的,而事件机制是作用于对象实例的。这就是说,只有对象被实例化了,我们才能对这个对象指定事件回调函数。而aop则相反,在定义对象的时候,回调函数已经被指定了。对象一旦实例化,回调函数也会被自动加载。
先看事件回调,如:
上面这个事件回调可以看出,我们在button 实例化了,我们才可以指定listener。而下次我们运行Button button1=new Button(); button1并不回加载回调函数。
再看aop回调,如:
上面这个aop回调可以看出,我们实际上改变了Button的定义。每次实例化Button的时候,我们指定的回调函数都会被植入到Button的实例中去。
无论是使用aop机制还是事件机制,要想对象在特定情况下执行指定的代码,编程人员都必须首先通知对象要执行什么代码,同时告诉对象在什么情况下执行。在代码指定这个环节上,aop是作用于定义层面的,而事件机制是作用于对象实例的。这就是说,只有对象被实例化了,我们才能对这个对象指定事件回调函数。而aop则相反,在定义对象的时候,回调函数已经被指定了。对象一旦实例化,回调函数也会被自动加载。
先看事件回调,如:
Button button=new Button();
button.addClickListener(回调函数);
上面这个事件回调可以看出,我们在button 实例化了,我们才可以指定listener。而下次我们运行Button button1=new Button(); button1并不回加载回调函数。
再看aop回调,如:
Object around():execution(* myButton.Button.click(..)){
运行回调函数
}
上面这个aop回调可以看出,我们实际上改变了Button的定义。每次实例化Button的时候,我们指定的回调函数都会被植入到Button的实例中去。