静态代理实际上就是在原有方法的基础上增加新功能
条件: 代理对象和被代理对象要实现相同的接口
//真实对象和代理对象要实现相同的接口
//代理对象要代理真实角色--增强正式对象
public class StaticProxy {
public static void main(String[] args) {
//不被代理
You you = new You();
you.happyMarray();
System.out.println("===========================");
//被代理
WeddingCompany weddingCompany = new WeddingCompany(new You());
weddingCompany.happyMarray();
}
}
//公共的接口
interface Marry{
void happyMarray();
}
//被代理对象
class You implements Marry{
@Override
public void happyMarray() {
System.out.println("我们要xx了,好开心");
}
}
//代理对象
class WeddingCompany implements Marry{
//被代理对象
private Marry target;
public WeddingCompany(Marry target) {
this.target = target;
}
@Override
public void happyMarray() {
before();
target.happyMarray();
after();
}
private void after() {
System.out.println("结婚之后,收尾款");
}
private void before() {
System.out.println("结婚之前,布置婚礼现场");
}
}
执行结果:
我们要xx了,好开心
===========================
结婚之前,布置婚礼现场
我们要xx了,好开心
结婚之后,收尾款