所谓的概念就不说了,举一个实际的例子,每个人结婚的时候都会有许许多多的事情需要安排吧,当你要结婚时,结婚这些事情你叫了婚庆公司帮你安排,在这里你就是静态代理中的真实对象,婚庆公司就是静态代理中的代理对象,代理对象帮你完成一些你不能完成的工作,下面用代码让大家理解一下:
public class StaticProxy {
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;
@Override
public void HappyMarry() {、
//结婚前的事情
before();
this.target.HappyMarry();//通过结婚接口属性调用结婚方法
//结婚后的事情
after();
}
private void after() {
System.out.println("结婚之后,收尾款");
}
private void before() {
System.out.println("结婚之前,布置现场");
}
//结婚真实对象使用方法
public WeddingCompany(Marry target)
{
this.target = target;
}
}
总结一下吧:
静态代理模式:真实对象和代理对象都要实现同一个人接口 (也就是代码中的结婚人和婚庆公司都是为 处理好结婚的事情为统一目标)
代理对象要代理真实对象(也就是代码中的婚庆公司要代理结婚人的婚事)
好处: 代理对象可以专注做很多真实对象做不了的事情
真实对象专注做自己的事情