快速业务通道

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

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

冒号呵呵一笑:“在数学中互为正交的两个向量在彼此方向上投影为零,意味着彼此独立、互不影响,斜交可不行。”

逗号吐了吐舌头。

“诚如前述,AOP以切面为模块。”冒号返回主题,“切面Aspect常直译为‘方面’,但它描述的是横切关注点(Cross-cutting concerns),故‘切面’更准确生动,而‘方面’则失之空泛呆板。何谓横切关注点?顾名思义,乃是与程序的纵向主流执行方向横向正交的关注焦点。不妨回顾一下,无论是过程式的函数,还是对象式的方法,都包含了完整的执行代码。但有些代码横跨多个模块,以片断的形式散落在各处,虽具有相似的逻辑,却无法用传统的方式提炼成模块,难以实现SoC与DRY。典型的例子如:在调用某些对象的方法、读写某些对象的域、抛出某些异常等等前后,需要用到统一的业务逻辑,诸如日志输出、代码跟踪、性能监控、异常处理、安全检查、事务管理等等。为解决此类问题,AOP应运而生。它将每类横切关注点封装到单独的Aspect模块中,将程序中的一些执行点与相应的代码绑定起来。单个的执行点称为接入点(join point),例如:调用某个对象的方法前后;符合预先指定条件的接入点集合称为切入点(pointcut),例如:所有以set为命名开头的方法;每段绑定的代码称为一个建议(advice)。”

问号有点疑问:“接入点与切入点有何区别?”

冒号释疑:“望文生义,接入处是点,切入处是面,面由点组成。advice定义于切入点上,执行于接入点处。换言之,共享一段附加代码的接入点组成了一个切入点。切入点一般用条件表达式来描述,不仅有广泛性,还有预见性——以后新增的代码如果含有满足切入点条件的接入点,advice中的代码便自动附着其上。这是AOP的威力所在,但有时也是麻烦所在。”

引号很较真:“好像一些书上把join point译作连接点,把advice译作通知。”

“误导,完全是误导!”冒号有些痛心疾首,“何谓join point?是advice中额外代码接入之处,join显为‘参加’、‘加入’之意。如果说翻作‘连接’ 只是因缺乏动感和方向性而不够贴切的话,将advice译作‘通知’则近乎荒谬了。advice是在原有程序流程中加入的额外流程,可理解为建议采取的措施,而‘通知’强调的是一种信息,难道是程序运行到join point的信息?抑或采取某种行动的信息?简直不知所云。”

顿了一会,冒号仍意犹未尽:“英文好的技术不好,技术好的英文不好,两者都好的不屑去翻译,导致市面上的译书虽汗牛充栋,然佳作寥寥。这里奉劝各位,如果真想成为优秀的程序员,一定要尽可能地读原文的书籍、文章和文档。事实上,凡是科学和艺术方面的专业人员,要想专业水平上一层台阶,都应读该专业权威经典的原文。要知道,语言之间的天堑原本难以弥合,译者的专业水准、语言功底和严谨程度更是参差不齐。纵使万事俱备,一年半载后的译书便如隔夜的饭菜,虽刚出炉,已然不新鲜了。”

逗号抱怨:“英文虽读得懂,但太慢、太费劲了。”

“多读,读多了就习惯了。”冒号鼓励着,“对程序员来说,英语也是一门计算机语言,而且是必修的语言。”

课堂上有这么一个规律,越是题外的话大家讨论得越欢。下面果然开始嘈杂起来,冒号也乐得乘机歇歇嘴。

等大伙渐渐把视线重新聚焦到讲台上,冒号才继续讲课:“从软件重用的角度看,可以这么理解AOP与OOP的关系:OOP只能沿着继承树的纵向方向重用,而AOP则弥补了OOP的不足,可以在横向方向重用。这算是回答了引号开始提出的问题:AOP不是OOP的分支,也不能说是超越

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号