yui3的AOP(面向切面编程)和OOP(面向对象编程)(2)
来源:uedmagazine.com 发布时间:2009-09-24 14:47:00
标签:YUI,AOP,面向对象,面向切面,OOP
jquery和prototype都实现了这种简单的函数绑定。jquery的aop在这里。但在yui3中,AOP则被提升至自定义事件的一种内在机制,在源码中随处可见。这在理解yui3的代码重用机制是很有帮助的。也正是得益于这种抽象使得yui3的自定义事件异常强大和灵活。和OOP相比,AOP的优点是非侵入式的“装饰”,但在多数情况下,并不推荐首先使用AOP来写代码。来看这个例子:每个人的生活习惯很类似,这里用四种行为为例,上学,放学,泡妞,打游戏,甲的生活规律很正常,每种事件发生的概率是一样的,乙是个贪玩的小孩,只会去网吧打游戏和泡妞,丙是一个爱学习的小孩,从不泡妞和打游戏,丁是一个经历超级旺盛的另类,每次都是同时干两件事情,上学的时候泡妞,放学的时候打游戏。这里用div代表每个人,用onmouseover来触发每个事件。
用OOP的方法那么程序结构应该是这样:
代码在这里:yui_oop.htm
这里的"古怪人"继承自"正常人"的时候,是通过代码重写的方法来达到重载的目的,这里明显违反了非侵入性原则。再来看AOP的思路:
代码在这里:yui_aop.htm
这里抽象出了事件发布工厂,用来专门处理事件的发布,由其生成的生活轨迹对象对每个人进行监听,捕捉每个人的各种行为。工厂在生成‘古怪人生活轨迹’的时候使用了上文提到的函数的监听绑定,这种绑定是非侵入性的,可以很好的和工厂解耦。从这个例子中比较OOP和AOP,两者复杂度差不多,但AOP思路更开阔,代码也更灵活一些。


猜你喜欢
- 目录1、生成器2、迭代器与可迭代的生成器1、生成器现在可以通过生成器来直接创建一个列表,但是由于内存的限制,列表的容量肯定是有限的,如果我们
- window.close(); 关闭浏览器窗口js代码的总结介绍序号关闭代码需要确认无任何作用无需确认测试1window.close()IE
- 慢查询日志概念MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过lon
- python3 sorted取消了对cmp的支持。python3 帮助文档:sorted(iterable,key=None,reverse
- 分区表的概念 分区致力于解决支持极大表和索引的关键问题。它采用他们分解成较小和易于管理的称为分区的片(piece)的方法。一旦分区被定义,S
- 当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样
- 目标文件夹内有多份 Word 文件 ——【xxx涨薪通告.docx】,我们需要在这些文档的末尾处添加
- 一. 网页挂马的概念: 网页挂马是指:在获取网站或者网站服务器的部分或者全部权限后,在网
- 简单的XML操作:XML文件创建把下面的代码复制到按钮事件中编译执行后可在相应物理路径中产生Pos.xml文件XmlTextWriter x
- 主要涉及:JOIN 、JOIN 更新、GROUP BY HAVING 数据查重/去重1 INNER JOIN、LEFT JOIN、RIGHT
- 如果能,请问如何实现 谢谢set aa=server.cre
- 首先来聊聊Vue框架,Vue是一套用于构建用户界面的渐进式的JavaScript框架,对于初学者来说是非常友好的 , Vue的虚拟Dom ,
- 我就废话不多说了,直接上代码吧!import datetimeimport timedef get_float_time_stamp():
- 首先贴一张验证码上来做案例:第一步先通过二值化处理把干扰线去掉:from PIL import Image# 二值化处理def two_va
- requests是使用Apache2 licensed 许可证的HTTP库。用python编写。比urllib2模块更简洁。Request支
- 一、问题描述一段 Python 代码在本地的 IDE 上运行正常,部署到服务器运行后,出现了 ModuleNotFoundError: No
- 大家都是用的哪一款远程控制工具呢?向日葵确实还可以,支持多平台、跨网络,但是必须要注册 Oray账号才行。虽然与免费版,但是用过的都知道,还
- MySQL 自4.1版以后开始支持INSERT … ON DUPLICATE KEY UPDATE语法,使得原本需要执行3条SQL语句(SE
- 一、内容回顾Model- 数据库操作- 验证class A(MOdel):user = email = pwd =Form- class L
- 临时表产生:A: SELECT INTO和B:CREATE TABLE + INSERT INTO1. A 要比B 快很多。但是A会锁定te