美文网首页
代理模式简介

代理模式简介

作者: CCCrash | 来源:发表于2020-04-04 12:23 被阅读0次

1、静态代理:(1)先定义一个接口,确定需要实现的方法;(2)创建代理类和具体的被代理类,这两个类都需要实现这个接口;(3)在代理类的构造方法中传递过来被代理类的实例,这样就可以获取到被代理类,在代理类实现的接口方法中可以调用被代理类的实现方法,同时还可以在代理类中加别的方法;这就是静态代理的基本流程。

2、动态代理:jdk动态代理,只能为接口创建代理,在运行时实现的,其中主要的是一个InVocationHandler:

demo测试一下:

(1)定义一个接口:

public interface Animal {

void eat();

}

(2)创建具体的对象:
public class Tigerimplements Animal{

private static final StringTAG ="Tiger";

    @Override

    public void eat() {

System.out.println("eat tiger");

    }

}

(3)具体的代理类实现上面说的一个接口:

public class Proxy implements InvocationHandler {

private static final StringTAG ="Proxy";

    private Objecttarget;

    public Proxy(Object target) {

this.target = target;

    }

/**

    * @param proxy  真是对象的代理

    * @param method 真是对象的方法

    * @param objects 代理真是对象的某个方法的参数

    * @return

    * @throws Throwable

*/

    @Override

    public Objectinvoke(Object proxy, Method method, Object[] objects)throws Throwable {

//此处打印一些东西

System.out.println("proxy: " + proxy.getClass().getName());

        System.out.println("before: ");

        method.invoke(target, objects);

        System.out.println("after: ");

return null;

    }

}

(4)main方法调用:

public static void main(String[] args) {

Animal tiger =new Tiger();

    Proxy proxy =new Proxy(tiger);

    //通过反射获得真是的代理对象

    Animal animal = (Animal) java.lang.reflect.Proxy.newProxyInstance(tiger.getClass().getClassLoader(),

            tiger.getClass().getInterfaces(), proxy);

    //通过代理对象调用真实的方法,这时候会调用Proxy类的invoke方法

    animal.eat();

    //获得真是对象的代理对象岁对应的class对象的名称

    System.out.println("main: " + animal.getClass().getName());

}

执行完成后的结果:

相关文章

  • 设计模式之代理模式

    文章结构1.代理模式简介2.代理模式分类3.参考文章 1.代理模式简介 代理模式就是为其他对象提供一种代理以控制对...

  • 第4章 结构型模式-代理模式

    一、代理模式简介 二、代理模式3个角色 三、代理模式的优点 四、代理模式的实例(游戏代练)

  • 理解代理模式

    原创博客地址 简介 代理模式,也叫做委托模式,分为:静态代理动态代理 代理模式也是平时比较常用的设计模式之一,代理...

  • JAVA代理与动态代理

    代理模式简介 代理模式:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就...

  • Java代理模式之JDK动态代理

    了解什么是动态代理模式,可参考Java设计模式之代理模式 简介 JDK动态代理是java.lang.reflect...

  • 代理模式简介

    1、静态代理:(1)先定义一个接口,确定需要实现的方法;(2)创建代理类和具体的被代理类,这两个类都需要实现这个接...

  • 设计模式-之-代理模式和面向接口编程

    一、代理模式简介 代理设计模式优点:(1) 保护真实对象(2) 让真实对象职责更明确.(3) 扩展 代理设计模式(...

  • 设计模式(六)代理模式

    1.代理模式简介 代理模式介绍 代理模式也叫委托模式,是结构型设计模式的一种。在现实生活中我们用到类似代理模式的场...

  • 代理模式(Proxy Pattern)

    1. 简介 代理模式属于设计模式中的结构型模式,有静态代理和动态代理两种实现方式。代理模式使用代理类来控制访问委托...

  • 10、结构型模式-代理设计模式

    1、加盟商来啦-你需要掌握的代理设计模式 简介:讲解代理设计模式,让代理帮你完成工作 代理设计模式(Proxy P...

网友评论

      本文标题:代理模式简介

      本文链接:https://www.haomeiwen.com/subject/zdcrphtx.html