Java设计模式-代理模式(Proxy)
代理模式就是多一个代理类出来,替原对象进行 一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌 握的不够全面,希望找一个更熟悉的人去帮你做,此处的代理就是这个意思。再如我们有的 时候打官司,我们需要请律师,因为律师在法律方面有专长,可以替我们进行操作,表达我 们的想法。
静态代理
特征是代理类和目标 对象的类都是在编译期间确定下来,不利于程序的扩展。同时,每一个代 理类只能为一个接口服务,这样一来程序开发中必然产生过多的代理。
package www.exer.collection; interface produceClothFactory{ default void produceCloth(){}; } public class FactoryTest implements produceClothFactory{ private ClothFactory factory; public FactoryTest(ClothFactory factory){ this.factory = factory; } @Override public void produceCloth(){ System.out.println("agent"); factory.produceCloth(); System.out.println("over"); } } class ClothFactory implements produceClothFactory{ @Override public void produceCloth(){ System.out.println("request agent!"); } } class test { public static void main(String[] args) { final ClothFactory clothFactory = new ClothFactory(); final FactoryTest factoryTest = new FactoryTest(clothFactory); factoryTest.produceCloth(); } }
动态代理
动态代理是指客户通过代理类来调用其它对象的方法,并且是在程序运行时 根据需要动态创建目标类的代理对象。
动态代理使用场合:
调试
远程方法调用
动态代理相比于静态代理的优点: 抽象角色中(接口)声明的所有方法都被转移到调用处理器一个集中的方法中 处理,这样,我们可以更加灵活和统一的处理众多的方法。