作者:微信小助手
发布时间:2022-01-11T10:44:35
Spring
 来说,如何自己实现
 Spring AOP
 ?
 就喜欢这样的题,能把那些天天写增删改查从来不思考的人给
 PK
 下去,今天就和大家一切学习代理模式与
 Spring AOP
 。
代理,即替代之意,可替代所有功能,即和原类实现相同的规范。
代理模式和装饰器模式很像,之前的装饰器讲的不是很好,这里换个例子再讲一遍。
宁静的午后,来到咖啡馆,想喝一杯咖啡。
给你一个咖啡接口:
public interface Coffee {/*** 打印当前咖啡的原材料,即咖啡里有什么*/void printMaterial();}
一个默认的苦咖啡的实现:
public class BitterCoffee implements Coffee {@Overridepublic void printMaterial() {System.out.println("咖啡");}}
默认的点餐逻辑:
public class Main {public static void main(String[] args) {Coffee coffee = new BitterCoffee();coffee.printMaterial();}}
点一杯咖啡。
 
优雅的服务生把咖啡端了上来,抿了一口,有些苦。想加点糖,对服务生说:“您好,请为我的咖啡加些糖”。
/*** 糖装饰器,用来给咖啡加糖*/public class SugarDecorator implements Coffee {/*** 持有的咖啡对象*/private final Coffee coffee;public SugarDecorator(Coffee coffee) {this.coffee = coffee;}@Overridepublic void printMaterial() {System.out.println("糖");this.coffee.printMaterial();}}
然后服务生就拿走了我的咖啡,去使用SugarDecorator为咖啡加糖,最后把加好糖的咖啡给我。
public class Main {public static void main(String[] args) {Coffee coffee = new BitterCoffee();coffee = new SugarDecorator(coffee);coffee.printMaterial();}}
看一看咖啡的成分,对的,确实加上了糖!
