书城计算机大话设计模式
11030400000077

第77章 2 代理模式

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

小A:“这么说来,这就是所谓的代理模式吗?”

大B:“是啊!为其他对象提供一种代理以控制对这个对象的访问。说白了就是,在一些情况下客户不想或者不能直接引用一个对象,而代理对象可以在客户和目标对象之间起到中介作用,去掉客户不能看到的内容和服务或者增添客户需要的额外服务。”

小A:“那么什么时候要使用代理模式呢?”

大B:“在对已有的方法进行使用的时候出现需要对原有方法进行改进或者修改,这时候有两种改进选择:修改原有方法来适应现在的使用方式,或者使用一个‘第三者’方法来调用原有的方法并且对方法产生的结果进行一定的控制。第一种方法是明显违背了‘对扩展开放、对修改关闭’(开闭原则),而且在原来方法中作修改可能使得原来类的功能变得模糊和多元化(就像现在企业多元化一样),而使用第二种方式可以将功能划分的更加清晰,有助于后面的维护。所以在一定程度上第二种方式是一个比较好的选择!当然,话又说回来了,如果是一个很小的系统,功能也不是很繁杂,那么使用代理模式可能就显得臃肿,不如第一种方式来的快捷。这就像一个三口之家,家务活全由家庭主妇或者一个保姆来完成是比较合理的,根本不需要雇上好几个保姆层层代理。”