代理类被代理类编译期间就被确定
制裙工厂,只有制裙方法。(ClothFac接口)
超短裙工厂,实现了制裙工厂的制裙方法,只做超短裙。(MiniskirtFac类 implement ClothFac)
代理工厂,超短裙工厂做的超短裙,代理工厂拿到后帮忙给模特穿。这里需要理解:构建制裙工厂对象,代理工厂构造器参数放入制裙工厂(实际创建代理工厂的对象时构造器参数传入被代理对象),这里涉及到java用构造器创建对象的底层原理。
/** * 静态代理举例 * */ public class StaticProxyTest { public static void main(String[] args) { MiniskirtFac miniskirtFac = new MiniskirtFac(); // 首先要有超短裙工厂存在 ClothFac proxySkirtFac = new ProxySkirtFac(miniskirtFac); // 将超短裙对象传入代理工厂,创建代理对象 proxySkirtFac.produceCloth(); // 代理工厂会让超短裙工厂制超短裙裙,并且先帮模特脱了裤子,再为模特穿上超短裙 } } interface ClothFac{ // 制衣工厂 void produceCloth(); // 制衣 } class MiniskirtFac implements ClothFac{ // 超短裙工厂要去实现制衣工厂里的制衣方法 @Override public void produceCloth() { System.out.println("做一条超短裙"); } } class ProxySkirtFac implements ClothFac{ // 代理制作各种裙子的工厂 private ClothFac clothFac; public ProxySkirtFac(ClothFac clothFac){ this.clothFac = clothFac; } @Override public void produceCloth() { System.out.println("帮模特脱裤子"); clothFac.produceCloth(); System.out.println("帮模特穿上超短裙"); } }
