代理模式(Proxy)
代理(Proxy)模式是一种比较有用的模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构。我们也许有代理服务器等概念,代理概念可以解释为:在出发点到目的地之间有一道中间层,意为代理。 ? 《设计模式》中定义:为其他对象提供一种代理以控制对这个对象的访问。 ? 代理模式的实例: ? 新建一个买车的接口: public interface Buy_car_package { ? 新建一个People人类,具有买车的行为,所以实现接口Buy_car_package: ??? private int cash; ??? public int getCash() { ??? public void setCash(int cash) { ??? public String getUsername() { ??? public void setUsername(String username) { ? People类不能拥有车,必须经过proxy代理类的认证,符合条件之后才可以拥有车辆,新建一个代理,这个代理类来考察当前的People是否有资格进行买车: ??? private People people; ??? public People getPeople() { ??? public void setPeople(People people) { ??? public void Buy_car() { } ? 好了,代理模式平台搭建好后,我们就使用这个代理来模拟买车的行为: ??????? People people_ref2 = new People(); ??????? Proxy_buy_car_imple proxy_buy_car_imple = new Proxy_buy_car_imple(); ??????? proxy_buy_car_imple.setPeople(people_ref2); ??? }
? 这样不是所有的People能够自由的拥有车辆,必须经过proxy的认证之后才可以。 ? 而代理模式在GOF四人帮的介绍中大体有4种使用情景: ? (1)远程代理。典型的就是客户端与webservice使用的情况,客户端由于是针对OOP编程,而不是针对webservice中的方法进行编程,所以得在客户端模拟一下webservice的环境,用proxy来对webservice进行包装,这样就可以使用proxy代理类来远程操作webservice了。 ? (2)虚拟代理。比如你要开发一个大文档查看软件,大文档中有大的图片,有可能一个图片有100MB,在打开文件时不可能将所有的图片都显示出来,这样就可以使用代理模式,当需要查看图片时,用proxy来进行大图片的打开。 ? (3)安全代理。其实也就是本例中所举的买车的例子,金钱不够不可以买车! ? (4)智能指引。比如在访问一个对象时检测其是否被锁定等情况。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |