关于AOP面向切面编程的理解

作者:Stephen

AOP:(Aspect Oriented Programming)面向切面编程;

OOP:(Object Oriented Programming)面向对象编程;

面向切面变成:基于OOP基础之上的信的编程思想;

(指在程序运行期间,将某段代码动态的切入到指定方法的指定位置进行运行的这种编程方式,面向切面编程)

场景:计算器运行计算方法的时候进行日志记录;

加日志记录:

    1.直接编写在房发的内部;不推荐,修改维护麻烦;


                    日志记录:系统的辅助功能;

                    业务逻辑:(核心功能)

                    耦合

    2.业务逻辑:(核心功能);日志模块;在核心功能运行期间,自己动态的加上

动态代理invocation

AOP前奏:

提出问题

·情景:数学计算器

·要求

         ①执行加减乘除运算

         ②日志:在程序执行期间追踪正在发生的活动

         ③验证:希望计算器只能处理正数的运算

·常规实现

·问题

○代码混乱:越来越多的非业务需求(日志和验证等)加入后,原有的业务方法急剧膨胀。每个方法在处理核心逻辑的同时还必须兼顾其他多个关注点。

○代码分散:以日志需求为例,只是为了满足这个单一需求,就不得不在多个模块(方法)里多次重复相同的日志代码。如果日志需求发生变化,必须修改所有模块。

动态代理

代理设计模式的原理:使用一个代理将对象包装起来,然后用该代理对象取代原始对象。任何对原始对象的调用都要通过代理。代理对象决定是否以及何时将方法调用转到原始对象上。

数学计算器的改进

日志处理器

验证处理器

测试代码

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容