2.解释下什么是 AOP?

AOP(Aspect-Oriented Programming,⾯向⽅⾯编程),可以说是 OOP(Object-Oriented Programing,⾯向 对象编程)的补充和完善。OOP 引⼊封装、继承和多态性等概念来建⽴⼀种对象层次结构,⽤以模拟公共⾏为的 ⼀个集合。当我们需要为分散的对象引⼊公共⾏为的时候,OOP 则显得⽆能为⼒。也就是说,OOP 允许你定义从 上到下的关系,但并不适合定义从左到右的关系。例如⽇志功能。⽇志代码往往⽔平地散布在所有对象层次中,⽽ 与它所散布到的对象的核⼼功能毫⽆关系。对于其他类型的代码,如:安全性、异常处理和透明的持续性也是如 此。这种散布在各处的⽆关的代码被称为横切(cross-cutting)代码,在 OOP 设计中,它导致了⼤量代码的重 复,⽽不利于各个模块的重⽤。

⽽ AOP 技术则恰恰相反,它利⽤⼀种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共⾏为封装到⼀个可重⽤模块,并将其名为“Aspect”,即⽅⾯。所谓“⽅⾯”,简单地说,就是将那些与业务⽆关,却为业务模块所共同调⽤的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。AOP 代表的是⼀个横向的关系,如果说“对象”是⼀个空⼼的圆柱体,其中封装的是对象的属性和⾏为;那么⾯向⽅⾯编程的⽅法,就仿佛⼀把利刃,将这些空⼼圆柱体剖开,以获得其内部的消息。⽽剖开的切⾯,也就是所谓的“⽅⾯”了。然后它⼜以巧夺天功的妙⼿将这些剖开的切⾯复原,不留痕迹。

 

使⽤“横切”技术,AOP 把软件系统分为两个部分:核⼼关注点和横切关注点。业务处理的主要流程是核⼼关注点,与之关系不⼤的部分是横切关注点。横切关注点的⼀个特点是,它们经常发⽣在核⼼关注点的多处,⽽各处都基本相似。⽐如:权限认证、⽇志、事务处理。AOP 的作⽤在于分离系统中的各种关注点,将核⼼关注点和横切关注点分离开来。

posted @ 2021-08-12 09:03  RainsX  阅读(277)  评论(0)    收藏  举报