1、代理模式中对象:代理对象、被代理对象。
2、代理对象需要完成被代理对象的需要完成的事。
3、代理对象需要拿到被代理对象的引用,因此,拥有被代理对象的引用当作成员变量。
4、代理执行对象需要复写代理工具类的invoke方法。
动态代理:
public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) throws IllegalArgumentException;
函数的作用:
1、根据被代理类的接口(interfaces)和 被代理类的类加载器(loader)在JVM内存中产生一个新的匿名类,该类集成了代理工具类(Proxy)并实现了接口(interfaces);
2、匿名类引用调用接口方法时,方法内部调用代理类的invoke接口。
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable;
函数作用:
1、代理类拥有被代理类的对象的引用;
2、invoke内部调用 method.invoke,根据反射机制,调到被代理类相关的方法。
1、代理模式(动态代理、静态代理)
2、工厂模式(简单工厂、工厂方法、抽象方法)
3、单例模式
4、委派模式
5、策略模式
6、原型模式
7、模板模式