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