一些个人对动态代理的理解★★★
作者:互联网
一些个人对动态代理的理解
-
首先,代理就是在实现真实对象所有方法的基础之上再实现一些其他方法
比如说:真实对象房东的方法是rent,那么代理对象首先也要调用房东的rent方法
其次,代理对象要实现一些其他的需求,像是收房租,收提成,带客户看房子等等
可以这样认为:代理模式就是对原有代码的方法补充
比如说现在有一个游戏,它的很多代码是固定的,如果我想要出一些活动,就用代理模式!
-
其次,分析一下代理角色的处理程序类 ProxyInvocationHandler.java
这个类其实就相当于是现实中的中介
-
那么它的职责就显而易见了:调用真实对象的方法(rent)并实现其他方法(收费,带客户看房子等等)的补充,如下图所示
-
由于客户需要访问到中介也就是代理对象,所以我们还要在代理程序中写一个获得代理对象的方法
如下图所示
-
-
最后来看一下客户端做了什么
-
首先是联系代理角色,现在没有;用代理角色的处理程序来实现Host接口的调用
//代理角色,现在没有;用代理角色的处理程序来实现Host接口的调用 ProxyInvocationHandler pih = new ProxyInvocationHandler();
-
设置代理类的代理对象,也就是代理了谁(因为一个中介可能是多个房东的代理人)
//真实角色 HostMaster hostMaster = new HostMaster(); //pih -> HostMaster接口类 -> Host接口 pih.setHost(hostMaster);
-
获取newProxyInstance动态生成代理类并调用代理类的方法
//获取newProxyInstance动态生成代理类 Host proxy = (Host) pih.getProxy(); proxy.rent(); proxy.seeHouse(); proxy.fee();
-
标签:pih,对象,代理,Host,理解,proxy,动态,rent 来源: https://www.cnblogs.com/xypersonal/p/16375475.html