一、背景
OOP,面向对象适合做大型系统,但是,它在需求变化扩展的时候,比较困难;因为面向对象是静态的:任何需求的细微变化,都可能导致比较大的影响。当然,设计模式也是解决OOP这种弊端的一种方式,可以让我们设计出灵活、可扩展、可重用的架构;但是,设计模式都围绕着抽象、类来处理,只能解决部分问题,它无法解决类的内部变化,而不影响其稳定的问题。
二、AOP
AOP:面向切面编程,它是一种编程思想,是对OOP的补充,解决类的内部变化的问题。能够让开发者动态的修改一个静态的面向对象模型,即不破坏封装的前提下,增加各种非业务功能(非业务逻辑,即公共逻辑,通用逻辑;而不是业务逻辑,因为业务逻辑是OOP的职责)。
AOP的实现方式:
(1)静态实现AOP
(2)动态实现AOP
(3)Unity、MVC中的AOP(重点)
三、需求变化
验证用户登录、异常处理、日志处理、缓存处理、添加事务、增加性能监控、发送邮件等
代理、装饰器
框架,通用性。