源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

JavaScript设计模式之代理模式介绍

  • 时间:2020-01-04 17:04 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:JavaScript设计模式之代理模式介绍
[b]代理模式说明[/b] 说明:顾名思义就是用一个类来代替另一个类来执行方法功能,这个模式跟装饰模式有点相似,不一样的是,代理模式是代替客户初始化被代理对象类,而装饰模式采用接口或初装饰者参数引用的方式来执行的。 在动态面向对象语言里,代理模式即起到控制修饰被代理类的作用,也对被代理类起到了充分的隐藏保护作用;被代理类只到我们需要时,才被间接初始化调用; 场景描述: 很常见到的就是租房子的例子,房客要租房子,房东要把房子租出去,但是房客跟房东都没怎么有空找房子或在家等着有人看房子,就一同去找房屋中介。房东把房间委托给中介代理租售,有合适的人需要时,中介带看房间,交钱租住,这样就帮房东把房间租出去了;房客委托房属中介帮招要求的房间位置条件,中介帮房客找到合房后,两者交钱租住,这样就替房客租到住的地方了; [b]实例源码[/b] 按上面的例子来实现; 1. 房东出租类;
[u]复制代码[/u] 代码如下:
function Fangdong() {     this.room = '房间名'; } Fangdong.prototype.chuzu = function() {     console.log('房东出租房间: ' + this.room); }
2. 中介代理类:
[u]复制代码[/u] 代码如下:
function Proxy() {     this.fangdong = new Fangdong(); } Proxy.prototype.chuzu = function() {     this.fangdong.chuzu();     console.log('出租后收中介费'); }
3. 使用方法:
[u]复制代码[/u] 代码如下:
//房客请中介帮找房子; var proxy = new Proxy(); proxy.chuzu();
看看上面的使用,被代理类在客户端完全用不着,只要使用Proxy类即可,可以很好使用在那种需要保护某些业务逻辑过程的情景中;使用代理模式,可以很好的保护需要保护的被代理类; 其他说明 跟装饰者模式一样,代理模式也很好的体现了面向对象思想的对扩展开放,对修改关闭的原则; 代理模式,可以使用接口或抽象类来规范共同的接口:(以下提供JAVA方式代理模式) 1. 抽象类 abstract 方式;
[u]复制代码[/u] 代码如下:
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 方式:
[u]复制代码[/u] 代码如下:
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();
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部