說明:本文章引自<<Java與模式>>
高老莊的故事
卻說那春融時節(jié)没宾,悟空牽著白馬蒜埋,與唐僧趕路西行淫痰。忽一日天色將晚,遠(yuǎn)遠(yuǎn)地望見一村人整份,這就是高老莊待错,豬八戒的老丈人高老太公家。為了將高家三小姐解救出豬八戒的魔掌烈评,悟空決定假扮高小姐火俄,揮一揮這妖怪:
“行者卻弄神通,搖身一變讲冠,變得就如那女子一般瓜客,婀娜多姿,沉魚落雁,獨(dú)自個坐在房里等那妖精忆家。不多時犹菇,一陣風(fēng)來,真?zhèn)€是走石飛砂……那陣狂風(fēng)過處芽卿,只見半空里來了一個妖精揭芍,果然生得丑陋:黑臉短毛,長喙大耳卸例,穿一領(lǐng)青不青称杨、藍(lán)不藍(lán)的梭布直裰,系一條花布手巾……走進(jìn)房筷转,一把摟住姑原,就要親嘴……”
高小姐的神貌與本人
悟空的下手之處是將高小姐的神貌和她本人分離開來。這與“開-閉”原則有異曲同工之妙呜舒。這樣一來锭汛,高小姐本人就成了“高小姐神貌”的具體實(shí)現(xiàn)。而高小姐神貌就成了抽象角色袭蝗,如下圖所示唤殴。
54.png
悟空扮演并代替高小姐
悟空巧妙地實(shí)現(xiàn)了“高小姐神貌”,也就是說同樣變成了“高小姐神貌的”的子類到腥。悟空可以扮演高小姐朵逝,并代替高小姐去會見豬八戒。其靜態(tài)結(jié)構(gòu)圖如下圖所示:
55.png
悟空代替高小姐去見八戒乡范。
顯然這就是代理模式的具體應(yīng)用配名,具體的講這是保護(hù)代理模式的具體應(yīng)用。只有代理對象認(rèn)為合適時晋辆,才將客戶端的請求發(fā)給真實(shí)對象渠脉。
八戒分辨不出真假老婆
從西游記的描述可以看出,八戒根本分不清楚悟空扮演的“高小姐替身”和“高小姐本人”栈拖×幔客戶端分辨不出代理對象和真實(shí)對象。這是代理模式的一個重要用意涩哟。
悟空代替高小姐會見八戒的對象圖如下:
56.png