《核心关注点与横切关注点》由会员分享,可在线阅读,更多相关《核心关注点与横切关注点(2页珍藏版)》请在金锄头文库上搜索。
1、通过对系统需求和实现的识别,我们可以将模块中的这些关注点分为:核心关注点和横切关注点。对于核心关注点而言,通常来说,实现这些关注点的模块是相互独立的,他们分别完成了系统需要的商业逻辑,这些逻辑与具体的业务需求有关。而对于日志、安全、持久化等关注点而言,他们却是商业逻辑模块所共同需要的,这些逻辑分布于核心关注点的各处。在 AOP 中,诸如这些模块,都称为横切关注点。应用 AOP 的横切技术,关键就是要实现对关注点的识别。如果将整个模块比喻为一个圆柱体,那么关注点识别过程可以用三棱镜法则来形容,穿越三棱镜的光束(指需求),照射到圆柱体各处,获得不同颜色的光束,最后识别出不同的关注点。如图 2.2
2、所示:图 2.2 关注点识别:三棱镜法则上图识别出来的关注点中,Business Logic 属于核心关注点,它会调用到Security,Logging,Persistence 等横切关注点。public class BusinessLogicpublic void SomeOperation()/验证安全性;Securtity 关注点;/执行前记录日志;Logging 关注点;DoSomething();/保存逻辑运算后的数据;Persistence 关注点;/执行结束记录日志;Logging 关注点;AOP 的目的,就是要将诸如 Logging 之类的横切关注点从 BusinessLogi
3、c 类中分离出来。利用 AOP 技术,可以对相关的横切关注点封装,形成单独的“aspect”。这就保证了横切关注点的复用。由于 BusinessLogic 类中不再包含横切关注点的逻辑代码,为达到调用横切关注点的目的,可以利用横切技术,截取 BusinessLogic 类中相关方法的消息,例如SomeOperation()方法,然后将这些“aspect”织入到该方法中。例如图 2.3:图 2.3 将横切关注点织入到核心关注点中通过利用 AOP 技术,改变了整个系统的设计方式。在分析系统需求之初,利用 AOP 的思想,分离出核心关注点和横切关注点。在实现了诸如日志、事务管理、权限控制等横切关注点的通用逻辑后,开发人员就可以专注于核心关注点,将精力投入到解决企业的商业逻辑上来。同时,这些封装好了的横切关注点提供的功能,可以最大限度地复用于商业逻辑的各个部分,既不需要开发人员作特殊的编码,也不会因为修改横切关注点的功能而影响具体的业务功能。