设计模式--代理模式(Proxy Pattern) 之 “高老庄悟空降八戒”

说明:本文章引自<<Java与模式>>

高老庄的故事
  却说那春融时节,悟空牵着白马,与唐僧赶路西行。忽一日天色将晚,远远地望见一村人,这就是高老庄,猪八戒的老丈人高老太公家。为了将高家三小姐解救出猪八戒的魔掌,悟空决定假扮高小姐,挥一挥这妖怪:
  “行者却弄神通,摇身一变,变得就如那女子一般,婀娜多姿,沉鱼落雁,独自个坐在房里等那妖精。不多时,一阵风来,真个是走石飞砂……那阵狂风过处,只见半空里来了一个妖精,果然生得丑陋:黑脸短毛,长喙大耳,穿一领青不青、蓝不蓝的梭布直裰,系一条花布手巾……走进房,一把搂住,就要亲嘴……”

高小姐的神貌与本人
  悟空的下手之处是将高小姐的神貌和她本人分离开来。这与“开-闭”原则有异曲同工之妙。这样一来,高小姐本人就成了“高小姐神貌”的具体实现。而高小姐神貌就成了抽象角色,如下图所示。

54.png

悟空扮演并代替高小姐
  悟空巧妙地实现了“高小姐神貌”,也就是说同样变成了“高小姐神貌的”的子类。悟空可以扮演高小姐,并代替高小姐去会见猪八戒。其静态结构图如下图所示:

55.png

  悟空代替高小姐去见八戒。
  显然这就是代理模式的具体应用,具体的讲这是保护代理模式的具体应用。只有代理对象认为合适时,才将客户端的请求发给真实对象。

八戒分辨不出真假老婆
  从西游记的描述可以看出,八戒根本分不清楚悟空扮演的“高小姐替身”和“高小姐本人”。客户端分辨不出代理对象和真实对象。这是代理模式的一个重要用意。
  悟空代替高小姐会见八戒的对象图如下:

56.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 文/赵元波 在中国,《西游记》的故事可谓是家喻户晓,妇孺皆知,只是《西游记》中的主角之一的猪八戒随唐僧西天取经之后...
    赵元波阅读 969评论 0 0
  • 《冈仁波齐》观影有感 朝圣的路上,看到了生,看到了死,生死殊途,而祝福无二。 朝圣的路上,看到了坚守,看到了随缘,...
    思想之光阅读 353评论 0 3
  • 下课后,我现在公布栏那里看着新闻。你悄悄来到我身边,在我左肩轻拍一下,我转到左边,空无一人,而你在我右边...
    听见空的感觉阅读 191评论 0 0