zoukankan      html  css  js  c++  java
  • 【设计模式】代理模式

    今天早上,米老师决定给同学开会。

    于是通过班长通知给全班的全部学生。

    这就是一个代理模式。

    代理模式(Proxy:为其它对象提供一种代理以控制对这个对象的訪问。

     

    一个是真正的你要訪问的对象(目标类),一个是代理对象,真正对象与代理

    对象实现同一个接口,先訪问代理类再訪问真正要訪问的对象。

     

    生活中,我们常听到xxx是某某品牌的校园代理。事实上和我们的设计模式是一样的。本来是某品牌直接到学校开展业务活动。如今通过代理来实现其业务。

    两者的应该具有同样的方法,就可以以实现同样的接口。


    再有。大化设计模式中提到的卓贾易通过戴励帮忙给娇娇送巧克力。也是一个代理模式。笔者觉得下面代码便是代理模式的“眼”,理解了它。便不难理解代理模式在代码中是怎样实现的。

     class Proxy :IGiveGift// Proxy 为代理类,让其也实现“送礼物”接口
     {
      Pursuit gg;//一个和追求者有同样方法的代理
    
      public Proxy(SchoolGirl mm)//代理 追 mm类
         {
             gg=new Pursuit (mm);// 代理 替追求者 追mm,建立了代理 追求者和mm三者的关系
         }
    
      public void GiveFlowers()
         {
             gg.GiveFlowers();//代理能够调用追求者的相关方法
         }
     } 


    也就是提供一个代理接口,然后追求者去实现送礼物接口。再用代理类去调用追求者的方法。来替追求者送礼物等。



    真正在程序中的应用方面:(个人理解不深刻,待继续学习)

     

    ①远程代理。也就是一个对象在不同的地址空间提供局部代表。

    这样能够隐藏一个对象存在于一个不同地址空间的事实。

    ②虚拟代理。依据须要创建开销非常大的对象。通过它来存放实例化须要非常长时间的真是对象。

    ③安全代理。

    依据须要创建开销非常大的对象。

    ④智能指引。当调用真实的对象时,代理处理另外一些事。


  • 相关阅读:
    sparql学习sparql示例、dbpedia在线验证
    中国绿卡
    逾期率的水有多深,你知道吗?
    ICO和区块链区别
    What are the benefits to using anonymous functions instead of named functions for callbacks and parameters in JavaScript event code?
    Link static data in sql source control
    sql data compare
    viewbag
    多态的实际使用
    win10 sedlauncher.exe占用cpu处理
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6935073.html
Copyright © 2011-2022 走看看