AOP、OOP在字面上虽然很是相似,但倒是面向不一样领域的两种设计思想。 简单说,AOP面向动词领域,OOP面向名词领域数据库
AOP: (Aspect Oriented Programming) 面向切面编程。是目前软件开发中的一个热点,也是Spring框架中的内容。利用AOP能够对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度下降,提升程序的可重用性,同时提升了开发的效率。主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。编程
OOP:面向对象编程。针对业务处理过程的实体及其属性和行为进行抽象封装,以得到更加清晰高效的逻辑单元划分。 而AOP则是针对业务处理过程当中的切面进行提取,它所面对的是处理过程当中的某个步骤或阶段,以得到逻辑过程当中各部分之间低耦合性的隔离效果。这两种设计思想在目标上有着本质的差别。设计模式
总之,AOP能够经过预编译方式和运行期动态代理实如今不修改源代码的状况下给程序动态统一添加功能的一种技术,把散落在程序中的公共部分提取出来,作成切面类,这样的好处在于,代码的可重用,一旦涉及到该功能的需求发生变化,只要修改该代码就行,不然,你要处处修改,若是只要修改一、2处那还能够接受,万一有1000处呢。安全
最经常使用的AOP应用在数据库链接以及事务处理上。框架
实现模式可能为:代理模式+工厂模式性能
优秀的设计模式是重构出来的:面向对象 >> 设计模式 >> 重构spa