静态代理


静态代理

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

package Thread.Demo04;

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

* 好处: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("收尾款"); } } }