yui3的AOP(面向切面编程)和OOP(面向对象编程)

来源:uedmagazine.com 时间:2009-09-24 14:47:00 

首先请把手放胸前成沉思状:我上了生活,还是被生活上了自己?

没想出答案把,恩,可以读下文了。从语义角度讲,同一事物的不同表述可以反映人的主观视角的不同,从哲学角度将,世界观影响方 * ,我们看事物的角度不同,有时会得出截然相悖的结论,从而会影响我们的做事方式和行为准则,现实生活如此,在丰富多彩的编程语言中更是如此,编程模式充满了对现实世界的各种模拟,包括是面向过程,面向对象,还有面向切面。我们大概已经非常熟悉面向过程和面向对象,切面的英文是Aspects(有时译作方面,我感觉用切面更能贴切的表达Aspects的内涵)。

有关AOP的链接看这里:
http://en.wikipedia.org/wiki/Aspect-ori ... rogramming

YUI3中的自定义事件实现了AOP
http://developer.yahoo.com/yui/3/event

什么是切面?举个简单的例子,每天我们上下班挤地铁坐公交和女朋友约会上网吧打游戏去电影院看电影……,一天要做很多事情,每个人都是一个Object,我们做的每件事情都是这个Object的方法,比如,

甲.上班();
乙.坐地铁();
丙.看电影();
其实可以换个角度看,公司需要员工来上班,轨道交通需要每个人去乘坐,电影院给每个人放电影。这样就变成了:

公司.need(甲)
地铁.carry(乙);
电影院.放电影给(丙);
这样看来,不仅甲乙丙每个个体都是一个对象,公司、地铁、电影院也是对象,这种抽象就是传统的面向切面。而在js编程中,程序一般都不大,所以大概不会到达非要使用切面级别的抽象的程度。但其基于事件驱动的原理则很容易让人联想到AOP,上个例子在js中就可能是:


someone.dosth();//OOP
object.fire('event',someone);//AOP

如果脱离上下文来看,上面的代码依然语义牵强。只是很多js框架把切面编程的边缘特性封装成方法,对人造成了很多误导。比如事件的绑定。当函数foo执行结束的时候执行myfoo,在不修改foo的基础上来添加对foo的监听,

var foo = function(){
    //some code here
};

jQuery.aop.after(foo,function(){
    //added code here
});

标签:YUI,AOP,面向对象,面向切面,OOP
0
投稿

猜你喜欢

  • 如何写JS数组sort的比较函数

    2010-07-02 12:12:00
  • css hack简易的“独享”与“交集”

    2008-08-31 20:17:00
  • ASP+ajax注册即时提示程序代码

    2011-02-05 11:25:00
  • 纯数字不重复排列的另类方法

    2009-12-04 18:25:00
  • ASP Framework_1_简介

    2009-10-12 11:35:00
  • CSS 的模块化思想

    2009-02-03 12:52:00
  • ASP无组件汉字验证码

    2008-05-08 13:19:00
  • 避免Adodb.Stream输出UTF-8时自动写入的BOM(asp)

    2011-08-24 20:32:56
  • css网页下拉菜单制作方法(3):样式修饰

    2007-02-03 11:39:00
  • 三条asp语句搞定路径

    2007-10-22 13:30:00
  • Bowman vs Google-设计与数据彼此相互需要

    2009-08-16 16:06:00
  • 运用ASP调用数据库中视图及存储过程

    2008-02-03 15:33:00
  • 彻底解决MySql在UTF8字符集下乱码问题

    2011-06-02 12:02:00
  • 用ASP实现IE地址栏参数的判断

    2008-10-10 15:54:00
  • 方便和实用

    2009-02-02 10:16:00
  • 一个js自动完成功能源码

    2011-06-06 07:42:00
  • ASP.NET 2.0防止同一用户同时登录

    2007-10-03 14:30:00
  • 怎样正确的解决 MySQL 中文模糊检索问题

    2008-12-19 17:26:00
  • MYSQL教程:my.cnf缓存优化

    2009-07-30 08:58:00
  • 就 CSS3 向 Eric Meyer 请教的 6 个问题

    2008-12-29 13:52:00
  • asp之家 网络编程 m.aspxhome.com