关于代理模式初解

代理模式:可以从字面上理解,比如说dell电脑的代理商

厂家可以直销,但是也允许代理商进行销售

那么我们就可以这么定义了

首先,我们定义一个最基本的制造者,也就是厂家,这里我们提供接口,让厂家跟代理商分别去实现,代理商的实现可以通过初始化厂家的方法

同时代理机构也继承了厂家的方法

而同时代理商还可以自己添加附加的方法,比如说优惠政策

这样的好处就是保证了源码(厂家),同时还可以有延展性

而关于动态代理模式就是使用了java内部的java.lang.reflect.Proxy包,可以看得出来是使用了反射中的包

这时候我么就不需要自己再去继承或者实现接口了,直接用Proxy、InvocationHandler跟Method

Proxy类使得程序员在运行时间创建代理对象,它是用来创建动态代理类和实例的静态方法。

系统有代理对象后,源对象的方法调用会首先被分派给一个InvocationHandler(这是个接口),这个接口有个invoke()方法,就是在这个方法中进行代理方法的其他操作

前两个参数是要获得被代理对象的class的getClassLoader()跟getInstance()方法

创建动态代理对象的步骤:

1、指明一系列的接口来创建一个代理对象

2、创建InvocationHandler对象,这是个接口,要用来继承实现

3、指定该代理为某个其他对象的代理对象

4、调用invoke方法进行代理,一是传递给真是对象调用,二是执行各种需要的操作

原文地址:https://www.cnblogs.com/kevinfuture/p/4357881.html