代理模式说明
说明:顾名思义就是用一个类来代替另一个类来执行方法功能,这个模式跟装饰模式有点相似,不一样的是,代理模式是代替客户初始化被代理对象类,而装饰模式采用接口或初装饰者参数引用的方式来执行的。
在动态面向对象语言里,代理模式即起到控制修饰被代理类的作用,也对被代理类起到了充分的隐藏保护作用;被代理类只到我们需要时,才被间接初始化调用;
场景描述:
很常见到的就是租房子的例子,房客要租房子,房东要把房子租出去,但是房客跟房东都没怎么有空找房子或在家等着有人看房子,就一同去找房屋中介。房东把房间委托给中介代理租售,有合适的人需要时,中介带看房间,交钱租住,这样就帮房东把房间租出去了;房客委托房属中介帮招要求的房间位置条件,中介帮房客找到合房后,两者交钱租住,这样就替房客租到住的地方了;
实例源码
按上面的例子来实现;
1. 房东出租类;
function Fangdong() { this.room = '房间名'; } Fangdong.prototype.chuzu = function() { console.log('房东出租房间: ' + this.room); }
2. 中介代理类:
function Proxy() { this.fangdong = new Fangdong(); }Proxy.prototype.chuzu = function() { this.fangdong.chuzu(); console.log('出租后收中介费'); }
3. 使用方法:
//房客请中介帮找房子; var proxy = new Proxy(); proxy.chuzu();
看看上面的使用,被代理类在客户端完全用不着,只要使用Proxy类即可,可以很好使用在那种需要保护某些业务逻辑过程的情景中;使用代理模式,可以很好的保护需要保护的被代理类;
其他说明
跟装饰者模式一样,代理模式也很好的体现了面向对象思想的对扩展开放,对修改关闭的原则;
代理模式,可以使用接口或抽象类来规范共同的接口:(以下提供JAVA方式代理模式)
1. 抽象类 abstract 方式;
public abstract class House { public void abstract chuzu(); }public class Fangdong extends House { private String room = “房间名称”; @Override public void chuzu() { System.out.println(room); } }
public class Proxy extends House { private Fangdong fangdong; public Proxy() { this.fangdong = new Hangdong(); } @Override public void chuzu() { this.fandong.chuzu(); System.out.println(“出租后交中介费”); } }
//使用 House house = new Proxy(); house.chuzu();
2. 接口 Interface 方式:
interface House { public void chuzu(); }public class Fangdong implements House { private String room = “房间名称”; @Override public void chuzu() { System.out.println(room); } }
public class Proxy implements House { private Fangdong fangdong; public Proxy() { this.fangdong = new Hangdong(); } @Override public void chuzu() { this.fandong.chuzu(); System.out.println(“出租后交中介费”); } }
//使用 House house = new Proxy(); house.chuzu();
介绍 代理,顾名思义就是帮助别人做事,GoF对代理模式的定义如下: 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。 代理模式使得代理对象控制具体对象的引用。代理几乎可以是任何对象:文件,资源,内存中的对象,或者是一些难以复制的东西。 正文 我们来举一个简单的例子,假如dudu要送酸奶小妹玫瑰花,却不知道她的联系方式或者不好意思,想委托大叔去送这些玫瑰,那大叔就是个代理(其实
本文向大家介绍学习JavaScript设计模式之代理模式,包括了学习JavaScript设计模式之代理模式的使用技巧和注意事项,需要的朋友参考一下 明星都有经纪人作为代理。如果请明星办一场商演,只能联系其经纪人,经纪人会把商演的细节和报酬谈好,再把合同交给明星签。 一、定义 代理模式:为一个对象提供一个代用品或占位符,以便控制对它的访问。 代理分为:保护代理和虚拟代理 保护代理:用于控制不同权限的
本文向大家介绍JavaScript设计模式之代理模式详解,包括了JavaScript设计模式之代理模式详解的使用技巧和注意事项,需要的朋友参考一下 代理模式是非常常见的模式,比如我们使用的VPN工具,明星的经纪人,都是代理模式的例子。但是,有人会疑问,明明可以直接访问对象,为什么中间还要加一个壳呢?这也就说到了代理模式的好处。在我看来,代理模式最大的好处,就是在不动原有对象的同时,可以给原有对象增
本文向大家介绍JavaScript设计模式之单件模式介绍,包括了JavaScript设计模式之单件模式介绍的使用技巧和注意事项,需要的朋友参考一下 单件模式说明 1. 说明:单件模式,就是静态化的访问中已经实例化的对象,这个对象只能通过一个唯一的入口访问,已经实例或待实例化的对象;面向对象语言如Java, .Net C#这样的服务端动态语言里,能保证类的操作有顺的进行,避免并行操作使数据发生混乱的
本文向大家介绍JavaScript设计模式之外观模式介绍,包括了JavaScript设计模式之外观模式介绍的使用技巧和注意事项,需要的朋友参考一下 外观模式说明 说明:外观模式是用于由于子系统或程序组成较复杂而提供的一个高层界面接口,使用客户端更容易访问底层的程序或系统接口; 外观模式是我们经常使用遇到的模式,我们经常涉及到的功能,可能需要涉及到几个子接口或子系统,而我们的某个功能,可能只需要这向
本文向大家介绍C++设计模式之代理模式,包括了C++设计模式之代理模式的使用技巧和注意事项,需要的朋友参考一下 前言 青春总是那样,逝去了才开始回味;大学生活也是在不经意间就溜走了,现在上班的时候,偶尔还会怀念大学时,大家在一起玩游戏的时光。大学喜欢玩游戏,但是可悲的校园网,速度能把人逼疯了;还好,后来搞了一个游戏代理,总算能勉勉强强的玩了两年。时至今日,敲起键盘写设计模式的时候,又想起了那些美好