什么是Java Proxy?
MDN对Proxy 的定义是:
Proxy对象用于定义基本操作的自定义行为(如属性查找、赋值、枚举、函数调用等)。
通俗的将,Proxy对象是目标对象的一个代理器,任何对目标对象的访问,都必须通过该代理器。因此我们可以对外界的访问进行过滤改写等操作。
语法
target-用Proxy包装的目标对象(可以是任何类型的对象,包括原生数组、函数,甚至另一个代理)。
handler-一个对象,其属性是当执行一个操作时定义代理的行为函数。
简单的示例
假设现在我们要访问一个对象的属性,如果该属性存在,打印该属性的值,否则报错。在没有Proxy对象之前,我们需要使用额外的方法来实现。如下:
上述代码虽然可以实现预期的功能,但如果我们能把检查属性是否存在的逻辑放到别的地方,会让我们更好的集中在业务逻辑代码上。这个时候我们就可以使用Proxy,下面让我们使用Proxy实现上面的功能。