JS设计模式之策略模式

JS设计模式之策略模式

策略模式是诸多设计模式中最常用且实用的一个,得益于JavaScript 灵活的特性使得策略模式应用起来非常的好用方便。策略模式是什么就不多说了,我们来看个比较常见的需求来体会一下。

需求:

根据用户不同身份显示相应的值,假设有身份如下:

  1. 学生
  2. 教师
  3. 家长
  4. 主任
  5. 校长

需要根据身份给一个变量赋值,值为:我是[ 身份 ]

通过以上需求我们可以采用最简单直接的方法,用 if 判断。

  1. if 判断实现版本
// 假设用户身份为 校长
const userIdentify = '校长'
let result = ''

if (currentIdentity === '学生') {
    result = '我是学生'
}

if (currentIdentity === '教师') {
    result = '我是教师'
}

if (currentIdentity === '家长') {
    result = '我是家长'
}

if (currentIdentity === '主任') {
    result = '我是主任'
}

if (currentIdentity === '校长') {
    result = '我是校长'
}

需求的确是已经实现了,但感觉不是很优雅。那么我们使用 策略模式 对其进行优化一下。

  1. 策略模式实现版本
// 假设用户身份为 校长
const userIdentify = '校长'

const  identityMap = {
    '学生': '我是学生',
    '教师': '我是教师',
    '家长': '我是家长',
    '主任': '我是主任',
    '校长': '我是校长'
}

const result = identityMap[currentIdentity]

对比以上两种不同的实现方式,貌似利用策略模式实现的版本的确是要优雅一点,甚至连 if 判断都省掉了。如果把身份对象map里面的value值换成对象或者function的形式,那么代码的扩展性又会得到进一步的提升。作为一个优秀的 CV工程师当然也要提升一下内功心法 ,下次再遇到这种需求肯定首选策略模式。

总结

示例就不写啦😄 都差不多的。大家可以根据这个思想灵活应用到项目中,不管是开发、造轮子、还是代码优化,在适合场景下策略模式比较的有优势。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值