Java老王说设计模式(二)——代理模式

代理模式之概念:为外对象提供相同栽代理以控制对之目标的拜会。在好几情况下,一个目标非称或者未可知一直引用另一个对象,而代理对象足以于客户端与目标靶之间从至中介的企图。

起一样天早上,小蔡突然走至老王面前,满脸困惑的讯问:“老王,我之大网接近有题目,好多资深网站还看不了,你能拉我望啊?”

老王问:“你看不了什么网站了?那简书能看也?”

小蔡说:“访问简书没问题,但是自访问不了Google,Youtube,Facebook和Twitter。”

老王这底神情

老王满脸黑线,用异常消沉无力的音响说:“你说之这些网站,由于某些不可说的来头,的确是造访不交。除非您采取VPN翻墙出去看。”

微蔡瞪大了对目

小蔡两肉眼怒视得大大的:“什么是VPN,为什么访问不顶???他们都是知名网站啊~~~Google是全球最为要命之寻找引擎,比百度好用一万加倍。Youtube是中外最老之视频网站,比爱奇艺好用一万倍增。Facebook是世界最深社交网站,就连人人网都是抄袭其的。Twitter是大地最充分之微博网站,新浪微博都是抄袭的。为什么这些世界率先之网站都看不了啊?”

躲过!全部躲过!

始终王低声说:“嘘~~~由于某些不可说的因由,其实我们因而之凡大中华局域网,如果您真的想看你说的那些网站,你就应用代理服务器去拜访吧。”

小蔡就问:“代理服务器是个什么不良?怎么用?为什么用代理服务器就能顾那些网站了吧?”

总王清了清嗓子:“正好我准备享受代理模式,那么我便从技术的角度为你谈话说代理服务器吧。其实代理服务器就是以的代办模式。”

多少蔡闷在没有说……

老王就说:“代理模式需先定义一个接口,比如代理服务器是用以访问网站的,我们便得定义有网站是独什么体统。”

//网站
public interface Website {
   //网站都可以显示内容
   void showContent();
}

稍加蔡闷在没说话…………

老王就说:“接下去我们看看哪些定义Google和Youtube,Google和Youtube都是网站,所以它要贯彻这个接口。”

//Google
public class Google implements Website {
  //Google的内容
  @Override
  public void showContent() {
    System.out.println("这是世界上最大流行的搜索引擎");
  }
}

//Youtube
public class Youtube implements Website {
  //Youtube的内容
  @Override
  public void showContent() {
    System.out.println("这是世界上最大流行的视频网站");
  }
}

多少蔡闷在无讲………………

老王就说:“这时候网站定义好了,我们重来定义之代理服务器,代理服务器其实为是网站,我们把他作为跳板去做客其他网站,以前自己之所以过一个格外好用底代理服务器,叫做红杏,不过本就被查封了。红杏的做事办法如下:”

//红杏,代理者
public class Hongxin implements Website {
  //被代理的对象
  private Website website;
  //只要是网站,都可以代理
  public Hongxin(Website website){
    this.website = website;
  }
  //执行被代理对象的方法
  @Override
  public void showContent() {
    this.website.showContent();
  }
}

小蔡继续煮在无提……………………

老王就说:“这时候一个访客来访问网站了。他透过红杏先失访问Google,然后又夺拜访Youtube。”

//访客
public class Visitor {
  public static void main(String[] args) {
    //使用红杏访问Google
    Hongxin hongxin = new Hongxin(new Google());
    hongxin.showContent();
    //使用红杏访问Youtube
    hongxin = new Hongxin(new Youtube());
    hongxin.showContent();
  }
}

小蔡还是烧着没有道…………………………(看得有多少蔡有点不快乐之样板,但是老王没察觉)

老王就说:“通过这例子,我们可窥见,虽然我们是当调用hongxin这个目标的章程,但其实,hongxin以其间是调用的Google和Youtube的道。这就是是代理模式。我们呈现不交实在的靶子,我们无非当代理。”

小蔡还是闷着尚未摆………………………………(看得出小蔡很恼火,快要发飙了之样板,但是老王没察觉,反而更说更兴奋)

老王就说:“我最后总结一下,代理模式里发3个角色:1.一个空洞出的接口。2.
当做代理的对象。3. 忠实的目标,即吃代理的目标。代理模式要运用了 Java
的多态,代理类负责接活,被代理类负责干活。这里吧沾满一个图来说明一下。”

代办模式

小蔡依然闷着尚未道………………………………………………

老王问:“小蔡,你怎么了?好怀念看上去不开心之楷模~”

稍蔡暴走

粗蔡发怒及:“老王!我只是怀念拜会那些网站而已,可是若顶现行且未曾教我如何使用代理!!!”

跪榴莲

老王赶紧抱歉道:“对无鸣金收兵,对无鸣金收兵,妹纸,走,哥就虽让您哪些用代理,手把手的教都可以,教平夜且得以。别气了,别气了。”

小蔡扭头甩下同样句子:“这还多。”

直王/小蔡求打赏

  • 老王说设计模式(一)——策略模式
  • 老王说设计模式(二)——代理模式
  • 老王说设计模式(三)——单例模式
  • 老王说设计模式(四)——多例模式
  • 老王说设计模式(五)——工厂方法模式
  • 老王说设计模式(六)——抽象工厂模式
  • 老王说设计模式(七)——门面模式
  • 老王说设计模式(八)——适配器模式

双重多内容,正在到来,敬请关注“小蔡与老王的技艺一般”。
PS:小蔡和老王的技术一般,已经确立QQ群,欢迎各位小伙伴通过发送简信的方挂钩我们,询问QQ号。

相关文章