// 静态代理
// 真实对象和代理对象都要实现同一个接口
// 代理对象要代理真实对象
// 静态代理的好处:1.真实对象可以专注做自己的事 2.代理对象可以帮助真实对象做更多的事
public class StaticProxy {
public static void main(String[] args) {
Person person = new Person();
new WeddingCompany(person).happyMarry();
// 对比Thread线程原理
//new Thread(()-> System.out.println("结婚啦!")).start();
}
}
interface Marry{
//四大喜事: 久旱逢甘霖、他乡遇故知、洞房花烛夜、金榜题名时
void happyMarry();
}
// 真实对象(要结婚的人:小王)
class Person 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();
target.happyMarry();
after();
}
private void before(){
System.out.println("婚前布置婚礼现场~~~");
}
private void after(){
System.out.println("婚后现场恢复如初~~~");
}
}