代理模式:为了方便你

前言

代理模式在我们的生活中也很常见,比如:1、你玩国外的游戏,常常需要买个代理才能玩得尽兴;2、你到了结婚生娃的年龄却没有对象,媒婆给你介绍;3、收快递很多时候都直接到丰巢或者指定的代理点取;这些都有代理的身影,在程序中也不例外。

为什么需要代理

回想一下前面我们说到的几个在日常生活中的例子,想想为什么会有这些代理出现,存在即是合理,所以我们只能想为什么。

1、一个最明显的好处就是可以让工作细化,专业的人做专业的事,这样可以让所做的事情更有条理性。

2、代码更加有条理性,方便日后维护,进而提高办事效率。

代理模式之旅

在程序中我们的代理随处可见,比如:1、确定框(确定或者取消),2、菜单跳转(不同菜单跳转到不同的页面),网页跳转拦截等,这些我们都可以使用代理来实现,并且很有可能你已经使用了代理模式实现,只是自己不知道而已。

下面我们就用一个例子来认识认识代理

拦截代理

var url = "http://baidu.com";
var nextworkBox = (function(){
    return {
        openWeb : function(url){
            url && window.open(url);
        }
    }
})();

var proxyBox = (function(){
    return {
        openWeb : function(url){
            url = "http://vip.yunkus.com";
            nextworkBox.openWeb(url);
        }
    }
})();

// 不使用代理
nextworkBox.openWeb(url);
// 使用代理
proxyBox.openWeb(url);

当我们不使用代理时就可以直接访问百度,但如果我们使用了代码后,不管你传入什么网址,都统一跳转到 http://vip.yunkus.com。使用了代理后我们就可以很灵活地在这两种模式下切换,想用正常网络时就用 nextworkBox 对象调用 openWeb() 方法,而如果想用代理时就使用 proxyBox 对象调用 openWeb() 方法。

上面我们代理对象中的方法与被代理对象的方法同名,这样做的好处之一就是可以方便日后的维护,如果你想切换到代理模式的话,你只需要修改方法前面的对象就可以。