静态代理

静态代理

  • 模拟婚庆公司,来实现静态代理 我们真实角色,婚庆公司代理角色 结婚事件为接口

/*
静态代理模式总结:
  1.真实对象和代理对象都要实现同一个接口
  2.代理对象要代理真实角色
好处:
  1.代理对象可以做很多真实对象做不了的事情
  2.真实对象专注于做自己的事情
 */
public class StaticProxy {
    public static void main(String[] args) {
       /* //正常情况下,
        Person personMarry = new Person();
        personMarry.HappyMarry();*/
        //静态代理模式下,通过构造方法传入new的对象,就可以通过new 的对象来使用对象方法
        new WeddingCompany(new Person()).HappyMarry();

       /* Person person = new Person();
        WeddingCompany weddingCompany = new WeddingCompany(person);
        weddingCompany.HappyMarry();*/
    }
}

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;
    }

    private void after() {
        System.out.println("结婚后");
    }

    private void before() {
        System.out.println("结婚前");
    }

    @Override
    public void HappyMarry() {
        before();
        this.target.HappyMarry();
        after();
    }
}