创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。
    结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
    行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释
    器模式、状态模式、策略模式、职责链模式(责任链模式)、访问者模式。

    代理模式
    代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.
    优点:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.
    思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法

    image.png

    动态代理
    Ø代理类所在包:java.lang.reflect.Proxy
    ØAPI语法:
    static Object newProxyInstance(ClassLoader loader,
    Class<?>[] interfaces,
    InvocationHandler h )
    Ø注意该方法是在Proxy类中是静态方法,且接收的三个参数依次为:
    1.ClassLoader loader,:目标对象使用类加载器,获取加载器的方法是固定的
    2.Class<?>[] interfaces,:目标对象实现的接口的类型,使用泛型方式确认类型
    3.InvocationHandler h:事件处理,执行目标对象的方法时,会触发事件处理器的方法,会把当前执行目标对象的方法作为参数传入,所谓的h对象,目标拦截对象。

    注意:
    Ø产生的Proxy对象会有一个h属性,h就是实现invocationHandler的实例化对象。
    Ødelegate:就是原对象,所谓的目标对象。