静态代理

静态代理

** 静态代理模式**
** 真实对象和代理对象都要实现同一个接口**
** 代理对象要代理真实角色**

package Thread.Demo04;

/**
 * 静态代理模式
 * 真实对象和代理对象都要实现同一个接口
 * 代理对象要代理真实角色
 * <p>
 * 好处:1代理对象可以做很多真实对象做不了的事情;2真实对象可以专注做自己的事情
 *
 * @author liu
 */



// 加了static 才可以,是因为 main()是静态的
// 如果you类不是静态的话,new You()就相当于是new this.You()
// 如果You类是静态的话,new You()就相当于是new StaticProxy.You(),这样就没有this
public class StaticProxy {
    public static void main(String[] args) {
        WeddingCompany company = new WeddingCompany(new You());
        company.happyMarry();
    }


    interface Marry {
        void happyMarry();
    }

    // 真实角色,去结婚
    static class You implements Marry {

        @Override
        public void happyMarry() {
            System.out.println("我要结婚了");
        }
    }

    // 代理角色
    static class WeddingCompany implements Marry {
        private static Integer count = 1;
        private Marry name;

        public WeddingCompany(Marry name) {
            this.name = name;
        }

        @Override
        public void happyMarry() {
            //代理能做其他事
            before();
            this.name.happyMarry();
            after();
        }

        public void before() {
            System.out.println("筹备婚宴");
        }

        public void after() {
            System.out.println("收尾款");
        }
    }
}
posted @ 2022-03-13 23:13  小幼虫虫  阅读(24)  评论(0)    收藏  举报