编程范式概览
主要有面向对象编程、面向过程编程、函数式编程、事件驱动编程、面向切面编程。
面向过程编程是以过程为中心的编程思想,典型的如C语言。面向对象编程的语言有c++、java等。事件驱动编程在GUI开发中较为常见,函数式编程主要思想是把运算过程尽量写成一系列嵌套的函数调用。
AOP概述
AOP,全称Aspect Oriented Programming
,英文原意为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。
AOP说明
- 是一种编程范式,不是编程语言
- 解决特定问题,不能解决所有问题
- 和面向对象不是竞争关系,是OOP的补充,不是替代
AOP初衷
- DRY:Don't Repeat Yourself(拒绝重复工作)
- SOC:Separation of Concerns(切面分离)
水平分离:展示层-> 服务层-> 持久层
垂直分离:模块划分(订单、库存等)
切面分离:分离功能性需求与非功能性需求
使用AOP好处
集中处理某一关注点/横切逻辑
可以很方便地添加/删除关注点
侵入性少,增强代码可读性及可维护性
AOP应用场景
权限控制、缓存控制、事务处理、审计日志、性能监控、异常处理、分布式追踪、安全控制等
支持AOP的编程语言
这些语言既包括了面向对象的编程语言,也包括脚本语言、面向过程语言。这也说明了AOP的编程范式思想是应用非常广泛的。
AOP相关概念
srping中AOP用途
提供了声明式的企业服务,特别是EJB的替代服务的声阴
允许用户定制自己的方面,以完成OOP与AOP的互补使用
spring的AOP实现
- 纯java实现,无需特殊的编译过程,不需要控制类加载器层次
- 目前只支持方法执行连接点(通知Spring Bean的方法执行)
- 不是为了提供最完整的AOP实现(尽管它非常强大);而是侧重于提供一种AOP实现和Spring IOC容器之间的整合,
用于帮助解决企业应用中的常见问题 - Spring AOP不会与AspectJ竞争,从而提供综合全面的AOP解决方案
网友评论