面向对象的编程(OOP)中经常使用的概念是:继承、封装、多态。在面向方面的编程(AOP)中常使用的概念是:
advices/interceptors, introductions, metadata, and pointcuts。
AOP 面向方面编程的介绍:
面向方面的编程思路很简单。从面向过程、函数的编程到面向对象的编程到面向接口的编程到面向组件、模块编程的发展历史咱们能够知道,编程方法学的演进是一步一步的扩大了编程考虑的“边界”。到目前为止咱们的编程世界里的宇宙边界是“类、接口,或者组件”,在这个边界里,咱们认为,一个类实现一个接口,那就不能动态的实现另外一个接口,已有类的行为在编译之前就基本固定,要么是类内部定义的方法,要么是要么是继承和实现接口继承过来的方法。可是实际的编程工做中咱们碰到了“跨边界的状况”,须要多个类,接口,组件合做才能完成的工做,好比:多线程并发访问,程序流集中控制,序列化和程序状态保持,以及须要多个“类、接口、组件边界”共同参于才能完成的工做。为了更好的处理多个边界共同完成同一方面的工做,面向方面的编程出现了。这里的方面,咱们能够指:为完成同一任务而须要多个类、接口、组件一块儿协做工做的综合。你能够认为方面其实就是一个更大的类,这个类主要由咱们OOP中的类、接口组成,固然这些类和接口是如此的亲密,以致于他们行为(方法)能够相互转换。其实这没什么大不了的,接口的出现不是实现了动态的改变类的行为的吗?面向方面的编程只是作了一个延伸,把这个改变提高到了接口这个层次上。
面向方面编程 (AOP) 提供从另外一个角度来考虑程序结构以完善面向对象编程(OOP)。 面向对象将应
用程序分解成 各个层次的对象,而AOP将程序分解成各个方面 或者说 关注点 。这使得能够模块化诸如事务管理等这些横切多个对象的关注点。(这些关注点术语称做 横切关注点。)Spring的一个关键组件就是AOP框架。