代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问。
说人话就是:你想吃外卖变成,你委托骑手去店里拿外卖送到你手里。
代理模式的核心就是:丰富过程,结果不变。
事实上代理模式最大的好处就是,你可以随时修改某一段业务逻辑并保证结果是正确的。我们来看一段常见的代码。
function init(){
// 调用一大堆接口...
// 整合业务逻辑...
// 渲染页面...
}
function change(){
// 修改了页面里某个东西
init()
}
事实上你init函数里99%的接口调用和业务逻辑处理都是重复的,你只是改了某一个数值并想更新跟这个数值有关的一些页面信息,这时候你就可以用代理模式来控制init函数里哪些接口是需要更新的,哪些业务代码是需要执行的。如下所示
// 用锁的概念来判断哪些业务代码需要执行
function init(lock1,lock2,lock3)
// 调用一大堆接口...
// 整合业务逻辑...
// 渲染页面...
}
function change(){
// 修改了页面里某个东西
daili()
}
function daili(){
// 写一大堆条件判断
init(lock1,lock2,lock3)
}
改写后的代码,如果某天哪些锁失效了(或者帮你维护代码的人看不懂你写的代码),你只需要把锁直接写死(true or false)即可。甚至你可以直接在change函数里面调用init(true,true,true)来保证正确的结果。
二:
策略模式的定义是:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。
讲人话就是:定义一系列算法逻辑,处理类似的业务场景。
讲JavaScript话就是:你知道Math吗?就是把一堆数学方法整合到Math对象里,你可以很方便的调用这个对象的方法解决加减乘除等各种各样的数学问题。
大部分人都会将相同的业务逻辑整合到一起成为一个业务逻辑模块,现在你知道这个方法叫做策略模式了。