静态代理其实很好理解
假设现在有一个用户类 People,需要调用买苹果 BuyApple这个类的方法,但是 People 类不能直接调用到BuyApple类。这个时候就可以找来一个中间人(商家,商家去农民手里进货再卖给People),一切的操作先在中间人之内完成,再把结果返回给People。
package com.money.provider;
/**
* Author: money
* Description: TODO
* Date: 2024/6/16 16:24
* Version: 1.0
*/
public class Apple {
public int apple(){
return 10;
}
}
package com.money.provider;
/**
* Author: money
* Description: TODO
* Date: 2024/6/16 16:24
* Version: 1.0
*/
public class PeopleAppleProxy {
public int apple(){
Apple apple = new Apple();
int apple1 = apple.apple();
apple1 = apple1 + 100;
System.out.println("卖出苹果");
return apple1;
}
}
package com.money.provider;
/**
* Author: money
* Description: TODO
* Date: 2024/6/16 16:22
* Version: 1.0
*/
public class People {
public static void main(String args[]){
PeopleAppleProxy peopleAppleProxy = new PeopleAppleProxy();
int apple = peopleAppleProxy.apple();
System.out.println("用户购买苹果,花了" + apple + " 元");
}
}
此处代理可以增强功能,也避免了对原来业务的修改等等
但是这种写法,当需要使用到的业务类太多的时候,不可能创建这么多的类,这就得用到动态代理了。