代理模式:可以从字面上理解,比如说dell电脑的代理商
厂家可以直销,但是也允许代理商进行销售
那么我们就可以这么定义了
首先,我们定义一个最基本的制造者,也就是厂家,这里我们提供接口,让厂家跟代理商分别去实现,代理商的实现可以通过初始化厂家的方法
同时代理机构也继承了厂家的方法
而同时代理商还可以自己添加附加的方法,比如说优惠政策
这样的好处就是保证了源码(厂家),同时还可以有延展性
而关于动态代理模式就是使用了java内部的java.lang.reflect.Proxy包,可以看得出来是使用了反射中的包
这时候我么就不需要自己再去继承或者实现接口了,直接用Proxy、InvocationHandler跟Method
Proxy类使得程序员在运行时间创建代理对象,它是用来创建动态代理类和实例的静态方法。
系统有代理对象后,源对象的方法调用会首先被分派给一个InvocationHandler(这是个接口),这个接口有个invoke()方法,就是在这个方法中进行代理方法的其他操作
前两个参数是要获得被代理对象的class的getClassLoader()跟getInstance()方法
创建动态代理对象的步骤:
1、指明一系列的接口来创建一个代理对象
2、创建InvocationHandler对象,这是个接口,要用来继承实现
3、指定该代理为某个其他对象的代理对象
4、调用invoke方法进行代理,一是传递给真是对象调用,二是执行各种需要的操作