静态代理:
- 真实方法和代理方法的名字和参数等相同,方法体不同即可,
 - 代理类与被代理类通过实现一个相同的接口来建立起联系
 - 代理对象(WeddingCompany 的对象)要代理真实对象(You 的对象)
 
静态代理优点:
- 代理对象可以做很多真实对象做不了的事情
 - 真实对象专注做自己的事情
 
package creatthread;
public class StaticProxy {
    public static void main(String[] args) {
        System.out.println("静态代理演示:");
        You person = new You();
        //往WeddingCompany的构造器中扔一个实现了Marry的对象
        WeddingCompany wc = new WeddingCompany(person);
        wc.happyMarry();
        System.out.println();
        System.out.println("线程中静态代理的体现:");
        //往Thread的构造器中扔一个实现了Runnable接口的对象
        Thread thread = new Thread(() -> System.out.println("you get married."));
        thread.start();
    }
}
//公共接口
interface Marry {
    void happyMarry();
}
//被代理类
class You implements Marry {
    @Override
    public void happyMarry() {
        System.out.println("you get married.");
    }
}
//代理类
class WeddingCompany implements Marry {
	//真实对象
    private Marry person;
    public WeddingCompany(Marry person) {
        this.person = person;
    }
 	//需要被代理类自己完成的功能,在方法内部用被代理类的对象调用方法
    @Override
    public void happyMarry() {
        beforeMarry();
        person.happyMarry();
        afterMarry();
    }
    private void beforeMarry() {
        System.out.println("布置会场");
    }
    private void afterMarry() {
        System.out.println("撤掉会场布置");
    }
}
 
结果:
 









