静态代理
以结婚为例,假设有人需要结婚,需要请婚庆公司帮忙布置并婚礼现场并主持。那么,需要结婚的人就是被代理对象,而婚庆公司就是代理对象。
以下通过代码浅析:
1 结婚接口
//结婚接口
interface Marry{
void happyMarry();
}
2 People类
//被代理对象:人,需要结婚的人
class People implements Marry {
String name;
public People(String name) {
this.name = name;
}
@Override
public void happyMarry() {
System.out.println(this.name+"要结婚了。");
}
}
3 WeddingCompany类
//代理对象:婚庆公司,代理People类结婚
class WeddingCompany implements Marry {
//结婚的目标
private Marry target;
public WeddingCompany(Marry target) {
this.target = target;
}
@Override
public void happyMarry() {
//调用被代理对象的happyMarry()方法之前
before();
//调用被代理对象的happyMarry()方法
this.target.happyMarry();
//调用被代理对象的happyMarry()方法之后
after();
}
//结婚之前
private void before() {
System.out.println("WeddingCompany结婚之前:布置婚礼现场。");
}
//结婚之后
private void after() {
System.out.println("WeddingCompany结婚之后:收尾款。");
}
}
4 main
使用代理模式,用WeddingCompany类对象代理People类。
public static void main(String[] args) {
WeddingCompany weddingCompany = new WeddingCompany(new People("王老师"));
weddingCompany.happyMarry();
}