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

 

 

动态代理

动态代理是指客户通过代理类来调用其它对象的方法,并且是在程序运行时 根据需要动态创建目标类的代理对象。

动态代理使用场合:

调试

远程方法调用

动态代理相比于静态代理的优点: 抽象角色中(接口)声明的所有方法都被转移到调用处理器一个集中的方法中 处理,这样,我们可以更加灵活和统一的处理众多的方法。

posted @ 2022-03-22 22:37  Fancy[love]  阅读(38)  评论(0编辑  收藏  举报