悟空的下手之處是將高家三小姐的神貌和她本人分割開(kāi)來(lái),這和“開(kāi)一閉”原則有異曲同工之妙。這樣一來(lái),“高家三小姐本人”也就變成了“高家三小姐神貌”的具體實(shí)現(xiàn),而“高家三小姐神貌”則變成了抽象角色。
小A:“這麼說(shuō)來(lái),這就是所謂的代理模式嗎?”
大B:“是啊!爲(wèi)其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。說(shuō)白了就是,在一些情況下客戶(hù)不想或者不能直接引用一個(gè)對(duì)象,而代理對(duì)象可以在客戶(hù)和目標(biāo)對(duì)象之間起到中介作用,去掉客戶(hù)不能看到的內(nèi)容和服務(wù)或者增添客戶(hù)需要的額外服務(wù)。”
小A:“那麼什麼時(shí)候要使用代理模式呢?”
大B:“在對(duì)已有的方法進(jìn)行使用的時(shí)候出現(xiàn)需要對(duì)原有方法進(jìn)行改進(jìn)或者修改,這時(shí)候有兩種改進(jìn)選擇:修改原有方法來(lái)適應(yīng)現(xiàn)在的使用方式,或者使用一個(gè)‘第三者’方法來(lái)調(diào)用原有的方法並且對(duì)方法產(chǎn)生的結(jié)果進(jìn)行一定的控制。第一種方法是明顯違背了‘對(duì)擴(kuò)展開(kāi)放、對(duì)修改關(guān)閉’(開(kāi)閉原則),而且在原來(lái)方法中作修改可能使得原來(lái)類(lèi)的功能變得模糊和多元化(就像現(xiàn)在企業(yè)多元化一樣),而使用第二種方式可以將功能劃分的更加清晰,有助於後面的維護(hù)。所以在一定程度上第二種方式是一個(gè)比較好的選擇!當(dāng)然,話又說(shuō)回來(lái)了,如果是一個(gè)很小的系統(tǒng),功能也不是很繁雜,那麼使用代理模式可能就顯得臃腫,不如第一種方式來(lái)的快捷。這就像一個(gè)三口之家,家務(wù)活全由家庭主婦或者一個(gè)保姆來(lái)完成是比較合理的,根本不需要僱上好幾個(gè)保姆層層代理。”