静态代理的理解(Java中的结婚和婚庆公司之间的事儿)
package com.wen.thread;
/**
* @Author WangEn
* @CreateTime: 2021-04-10-15-52
* @Emile: wen_5988@163.com
*/
// 用结婚来讲解静态代理
// 结婚对象,婚庆公司
public class TestStaticProxy {
/**
* 总结静态代理
* 代理对象和真实对象都实现同一个接口
* 代理对象要代替真实对象做事
* 好处:代理对象可以做很多真实对象做不了的事
* // 真实对象专注做自己的事
* @param args
*/
public static void main(String[] args) {
// 静态代理的理解
// 首先先创建婚庆公司 帮助我结婚 传入目标对象来进行结婚
WeddingCompany weddingCompany = new WeddingCompany(new You());
// 调用结婚方法 举行婚礼
weddingCompany.HappyMarry();
}
}
interface Marry{
// 结婚这个事儿
void HappyMarry();
}
// 定义一个人来结婚
class You implements Marry{ // 真实对象
@Override
public void HappyMarry() {
System.out.println("我要结婚啦,太开心啦");
}
}
// 定义一个婚庆公司来帮助我结婚 中间对象
class WeddingCompany implements Marry{ // 婚庆公司
// 定义一个目标对象 来帮助 他结婚
private Marry target;
public WeddingCompany(Marry target) {
this.target = target;
}
@Override
public void HappyMarry() {
before();
this.target.HappyMarry(); // 关键所在 传入的这个目标对象来实现结婚这个事儿
after();
}
private void after() {
System.out.println("结婚之后 收取尾款");
}
private void before() {
System.out.println("结婚之前 布置场景");
}
}