ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

一些个人对动态代理的理解★★★

2022-06-14 17:35:30  阅读:130  来源: 互联网

标签:pih 对象 代理 Host 理解 proxy 动态 rent


一些个人对动态代理的理解

  • 首先,代理就是在实现真实对象所有方法的基础之上再实现一些其他方法

    比如说:真实对象房东的方法是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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有