说到策略模式,其实你并不陌生啊,不相信?
配置路由时:
const routes = [
{ path: '/', component: Home },
{ path: '/about', component: About },
]
定义element-ui表单校验规则:
rules: {
name: [
{ required: true, message: '请输入活动名称', trigger: 'blur' },
],
region: [
{ required: true, message: '请选择活动区域', trigger: 'change' }
],
date: [
{ type: 'date', required: true, message: '请选择日期', trigger: 'change' }
]
}
这你再熟悉不过了吧!好,进入内容
策略模式主要用来优化对多种情况或多种条件的处理,不用策略模式的话你可能会写很多if else,并且如果之后要新加条件,你又要去改动代码主体。而策略模式就很好解决了这两个问题,策略模式对多种条件进行封装,代码简洁,后续添加仅需修改配置内容,极大的提高了稳定性和延展性。
再来点🌰,体会体会它的思想。
现在有个需求根据对象分配任务,用if else或者switch大家很容易想到样子,我们看下策略模式呢
const config = {
you: () => {
console.log('买菜做饭');
},
me: () => {
console.log('等着吃饭');
},
he: () => {
console.log('等着洗碗');
},
}
config[who]()
再者,平时写代码也可以做些小优化,比如
优化前:
if (type === '1' || type === '2' || type === '3' || type === '4' || type === '5') {
console.log('do sth...')
}
优化后:
['1', '2', '3', '4', '5'].includes(type) && console.log('do sth...')