快速业务通道

冒号课堂§3.3:切面范式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

冒号课堂§3.3:切面范式

时间:2011-06-25 BlogJava xyz98

第三课 常用范式(3)

3.3 切面范式——多角度看问题

横看成岭侧成峰           ——《苏轼·题西林壁》

关键词:编程范式,SoC,DRY,AOP,Aspect,join point,pointcut,advice,OOP

摘要:AOP简谈

?提问

什么是SoC和DRY?

如何有效地避免紊乱、松散、重复的代码?

抽象与分解的原则是什么?

什么是横切关注点?

接入点与切入点有何区别?

什么是编织?有哪些不同的编织方法?

实施AOP有哪些步骤?

为什么说AOP是OOP的一种补充?

为什么提倡尽可能地阅读原文的书籍和资料?

:讲解

课间休息刚一结束,引号便重开话题:“OOP方兴未艾,AOP又开始崭露头角。AOP算是OOP的一种补充、一种分支还是一种超越?”

叹号故作捶胸顿足状:“OOP还没有完全吃透,又来了个什么AOP。”

“不同的人对新生事物采取不同的态度。”冒号王顾左右而言他,“追星族倾向于盲目追捧,唯恐落伍,他们信奉新潮的、流行的就是好的;守旧派倾向于本能抗拒,回避求新,他们认为经典的、传统的才是好的。”

引号和叹号互视一眼,不情愿地戴上了老冒派发的帽子。

冒号续道:“从宏观角度看,太阳底下没有新鲜事——AOP无非是SoC原理和DRY原则的一种应用;从微观角度看,太阳每天都是新的——AOP虽自OOP的土壤中长出,却脱离藩篱自成一体,并且嫁接到非OOP的领地,不仅在纯过程式语言、函数式语言、甚至逻辑式语言中得到发展,而且本身也具备了一定的声明式语言特征,成为一种新的软件模块化方式。”

问号举手:“什么是SoC和DRY?”

引号代答:“SoC就是Separation of concerns,即关注点分离;DRY是Don’t Repeat Yourself,即尽量减少重复代码。”

“答案正确,加十分!”冒号戏赞道,“不良代码通常有两种病征:一是结构混乱,或聚至纠缠打结、或散至七零八落;二是代码重复,叠床架屋、臃肿不堪。治疗此类病症一个有效的方法是抽象与分解:从问题中抽象出一些关注点,再以此为基础进行分解。分解后的子问题主题鲜明且独立完备,既不会牵一发而动全身,也不会四分五裂、支离破碎。同时具有相同特征的部分可以象代数中的公因子一样提取出来,提高了重用性,减少了重复性。”

冒号课堂§3.3:切面范式(2)

时间:2011-06-25 BlogJava xyz98

句号醒悟道:“这不就是模块化吗?”

“准确地说,抽象是前提,分解是方式,模块化是结果。”冒号很讲究精确,“大家记得庖丁解牛的故事吧?在常人眼中复杂的牛体,庖丁经过抽象,已目无全牛,及至提刀分解,自是游刃有余。待牛如土委地,模块化既成。”

句号举一反三:“前面提到的编程范式的基本思想大多不也如此?将程序分别抽象分解为过程、函数、断言、对象和进程,就依次成为过程式、函数式、逻辑式、对象式和并发式。至于泛型式——”

句号讲不下去了。

“泛型式虽未引入新类型的模块,其核心也是抽象出算法后与数据分解。”冒号为其解围,“以此类推,切面式的AOP将程序抽象分解为切面。”

问号提问:“抽象与分解的原则是什么?”

冒号作了个V字:“两条:单一化,正交化。每个模块职责明确专一,模块之间相互独立,即高聚合低耦合(high cohesion & low coupling)[1]。此原则相当普适,是分析复杂事物的一种基本方法,在数学和物理中应用得尤为广泛,如质因式分解、正交分解、谱分解等等。”

逗号调皮地抬杠:“为什么称为正交化呢?斜交化不行吗?&rdquo

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号