//23种设计模式之静态代理模式。
// 运用领域(线程创建的时候, Thread实现了Runnable接口 new Thread(真实目标对象).start() )
// 类比(你要结婚,举办婚礼得时候 婚庆公司 实现了 结婚的接口 new WeddingCompany(真实要结婚的对象).HappyMarry() )
// 比如你要结婚了,你只需要做结婚这件事情,婚庆公司帮你做 选饭店,布置现场,收尾款,订衣服,约朋友,主持婚礼,而你只需要做 结婚 这件事,其他事情 不用管
public class StaticProxy {
public static void main(String[] args) {
You you =new You();
WeddingCompany company=new WeddingCompany(you);
company.HappyMarry();
}
}
//结婚接口
interface Marry{
void HappyMarry();
}
//真实角色: you 你 去结婚
class You implements Marry{
@Override
public void HappyMarry() {
System.out.println("鲁迅要结婚了,很开心");
}
}
//代理角色: 婚庆公司:WeddingCompany
class WeddingCompany implements Marry{
//目标对象,真实要结婚的人
private Marry target;
public WeddingCompany(Marry target) {
this.target = target;
}
@Override
public void HappyMarry() {
before();
target.HappyMarry();
after();
}
private void before() {
System.out.println("结婚之前,布置现场");
}
private void after() {
System.out.println("结婚之后,收尾款");
}
}
//输出结果