设计模式

本文介绍了软件设计中的两种模式——代理模式和策略模式。代理模式通过引入代理对象来控制对目标对象的访问,允许在不改变接口的情况下增加额外的功能。策略模式则通过定义一系列算法并将它们封装起来,使得算法可以在运行时互换,便于管理和扩展业务逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问。

说人话就是:你想吃外卖变成,你委托骑手去店里拿外卖送到你手里。

代理模式的核心就是:丰富过程,结果不变。
事实上代理模式最大的好处就是,你可以随时修改某一段业务逻辑并保证结果是正确的。我们来看一段常见的代码。

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对象里,你可以很方便的调用这个对象的方法解决加减乘除等各种各样的数学问题。
大部分人都会将相同的业务逻辑整合到一起成为一个业务逻辑模块,现在你知道这个方法叫做策略模式了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值