AOP(Aspect-Oriented Programming,面向方面编程)是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。AOP利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为 “Aspect”,即方面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。
AOP代表的是一个横向的关系,如果说“对象”是一个空心的圆柱体,其中封装的是对象的属性和行为; 那么面向方面编程的方法,就仿佛一把利刃,将这些空心圆柱体剖开,以获得其内部的消息。而剖开的切面,也就是所谓的“方面”了。然后它又以巧夺天功的妙手 将这些剖开的切面复原,不留痕迹。
总的来说AOP 就是横向切割,解耦的一种设计模式。上篇博客,有一个简单的DEMO,那时我们一般使用AOP的方法。但是我们的解耦不仅仅是那样,这篇博客,我们进一步剖析一下AOP,看能不能让解耦再进一步。首先我们看一张图:
AOP代表的是一个横向的关系,如果说“对象”是一个空心的圆柱体,其中封装的是对象的属性和行为; 那么面向方面编程的方法,就仿佛一把利刃,将这些空心圆柱体剖开,以获得其内部的消息。而剖开的切面,也就是所谓的“方面”了。然后它又以巧夺天功的妙手 将这些剖开的切面复原,不留痕迹。
总的来说AOP 就是横向切割,解耦的一种设计模式。上篇博客,有一个简单的DEMO,那时我们一般使用AOP的方法。但是我们的解耦不仅仅是那样,这篇博客,我们进一步剖析一下AOP,看能不能让解耦再进一步。首先我们看一张图: