Spring学习(3)-认识AOP

本文通过生动的例子介绍了面向切面编程(AOP)的概念,对比面向对象编程(OOP),阐述了AOP如何帮助开发者更好地管理与业务逻辑无关但又必须处理的代码,如事务管理等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

认识AOP

是什么?能干什么?怎么用?怎么用得更好?
关系:面相切面编程(AOP)是面相对象编程(OOP)的补充。
在OOP中,最小建模单元是class,在AOP中最小单元则是切面。
概念: 切面(aspect)
理解一个概念,最好的方式,是学习例子。下面用一个例子来进行学习。
Jack如何将大象放进冰箱呢?
只需要三步:1.打开冰箱 2.放入大象3.关上冰箱

Person jack = new Person("Jack");
putElephantIntoRefridg();

public static void putElephantIntoRefridg(){
    System.out.println("Jack open the refridge");   
    System.out.println("Jack put an elephant into the refridge");
    System.out.println("Jack close the refridge");
}

好的,这个太死了,升级一下。加几个参数灵活配置。
这样一来,无论谁都可以想放什么就放什么啦。

Person Jack = new Person("jack");
putSthIntoRefridge(Jack.getName(), "elephant");
putSthIntoRefridge(Jack.getName(),"");
...
//放东西到冰箱里
public static void putSthIntoRefridge(String operatorName, String sth){
    beforePut(operatorName);
    System.out.println(operatorName +" put "+ sth +"into refridge");
    afterPut(operatorName);
}
//开冰箱
public static void beforePut(String operatorName){
    System.out.println(operatorName +" open the refridge");
}
//关冰箱
public static void afterPut(String operatorName){
    System.out.println(operatorName +" close the refridge");
}

一定程度上的将开关冰箱的代码从业务代码(放进冰箱)抽取了出来。
还是扩展性不足。比较局限。
比如,Jack接下来要出远门。放完以后,还要求检查电费是否充足,不够就充钱。避免电费不够,自动断电以后,冰箱里的东西坏掉了。(很多智能电表已经是充多少用多少了)
那这种情况下,只能改原来的代码,加一个CheckFees()步骤。

我的理解中。AOP就是为了更好配置管理,这种,和业务逻辑无关,但又不得不做、有规范流程的代码。比如事务管理。

结合例子,对应起来。
开涛的跟我学Spring
开涛大哥的博客里,就有对术语的浅显化解释。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值