传统的编程方法是OOP(面向对象编程)方法,该方法的好处不用多说,大家都很了解。然而,它有一个很大的弊端就是,当你在开发你的应用时,经常会发现在程序的架构中,有很多模块的功能很类似,只是针对的具体功能不同而已。举个例子如常用的管理功能(增、删、改、查),很多模块说白了都是这个功能的变体,大同小异。如果按照传统的OOP编程方式,每开发一个模块,程序员都需将该模块的增删改查功能全部开发出来,这样,不同的程序员都在开发几乎相同逻辑的业务功能,所以,按这样的方式进行下去,最终你会发现整个项目中有很多代码是重复的,而且模块越多,代码重复的量就越多。这样造成的后果是即耗精力,又低效,于人于己都是巨大的损失。
那么怎样解决这种弊端呢?目前,使用最好的就是AOP(面向切面编程,或者叫面向方面编程)方法了。面向切面编程,顾名思义就是将应用的开发从横向切开,将那些影响多个模块(或者类)的某种行为封装到单独的模块,这样即可实现模块的重用,避免代码的大量重复 。AOP 的核心构造就是方面,即
怎样将不同的应用模块之间类似的一种功能划分成为一个方面 。
例如,上面所说的管理功能(增、删、改、查),不同的管理模块都有类似的管理逻辑,如果把这些模块中管理功能按方面划分,将增的方面抽象出来,单独建立一个模块负责增的功能;将删的方面抽象出来,也单独建立一个模块负责删的功能;其他的类似。当然,也可以把增、删、改、查四个方面放在一起抽象成为一个模块(如manager)。这样,只需要编程人员一次性抽象地编好所有的管理功能(增、删、改、查),然后,其他人员在编写具体的管理业务逻辑时只需调用已经编写好的管理抽象模块实现自己的业务逻辑即可,而不需要每个程序员反反复复编写每个模块的整个管理功能逻辑,这样就避免了代码的大量重复,同时又提高了程序的可扩展性,将来再有新的管理模块加入进来,只需花费很少的时间即可应对变化,整个程序的开发效率相应地提高了很多。
这就是所谓的AOP。