当前位置:网站首页>利用策略模式优化if代码【策略模式】
利用策略模式优化if代码【策略模式】
2022-07-04 17:16:00 【qq_22841387】
问题描述
当前我们代码中存在很多的if,else去控制程序的流程,但是这样就会导致一个问题——代码的可扩展性不高。
这里以策略模式进行对if-else代码的优化
实现过程
1.定义策略模式类型
/** 通用类型 */
export namespace Common {
/** * 策略模式 * - 状态 * - true时执行的函数 */
type StrategyAction = [boolean, () => void];
}
参数中,左侧是boolean类型,右侧是对应的响应函数
2.执行策略模式函数
import {
Common } from "@/types/common/common"
export function exeStrategyActions(actions: Common.StrategyAction[]) {
actions.some((item) => {
const [flag, action] = item
if (flag) {
action()
}
return flag
})
}
通过
some
去执行策略模式,当对应策略模式类型中的flag
为true时,执行对应的方法
some的官方定义
The some() method tests whether at least one element in the array passes the test implemented by the provided function. It returns true if, in the array, it finds an element for which the provided function returns true; otherwise it returns false. It doesn’t modify the array.
解释:
这个some方法测试是否数组中至少有一个通过提供的函数。将它变为ture,如果它找到了一个元素符合提供的函数;否则变为false。它不会改变原本数组
也就是说,当some找到了第一个满足的条件后,就不再执行后续方法
3.实例使用
const action :Common.StrategyAction[] = [
[
value === '首页',
() => {
useRouterPush().routerPush('home')
},
],
[
value === '提交列表',
() => {
submitListModal.openModal()
},
],
]
exeStrategyActions(action)
- 当
value
为首页时,执行跳转路由方法 - 当
value
为提交列表时,打开拟态框
边栏推荐
- File processing examples of fopen, FREAD, fwrite, fseek
- Unity 制作旋转门 推拉门 柜门 抽屉 点击自动开门效果 开关门自动播放音效 (附带编辑器扩展代码)
- 【机器学习的数学基础】(一)线性代数(Linear Algebra)(上+)
- LD_ LIBRARY_ Path environment variable setting
- Is it safe to open an account online? is that true?
- 使用FTP
- How to download files using WGet and curl
- 力扣刷题日记/day4/6.26
- Li Kou brush question diary /day7/2022.6.29
- 2022年字节跳动日常实习面经(抖音)
猜你喜欢
Li Kou brush question diary /day8/7.1
Grain Mall (I)
字节跳动Dev Better技术沙龙成功举办,携手华泰分享Web研发效能提升经验
Li Kou brush question diary /day5/2022.6.27
【2022年江西省研究生数学建模】水汽过饱和的核化除霾 思路分析及代码实现
Li Kou brush question diary /day2/2022.6.24
如何提高开发质量
I always thought that excel and PPT could only be used for making statements until I saw this set of templates (attached)
TorchDrug教程
Scala basic tutorial -- 19 -- actor
随机推荐
Imitation of numpy 2
File processing examples of fopen, FREAD, fwrite, fseek
Scala基础教程--20--Akka
输入的查询SQL语句,是如何执行的?
How is the entered query SQL statement executed?
Lua emmylua annotation details
基于unity的愤怒的小鸟设计
Nature microbiology | viral genomes in six deep-sea sediments that can infect Archaea asgardii
力扣刷题日记/day2/2022.6.24
爬虫(6) - 网页数据解析(2) | BeautifulSoup4在爬虫中的使用
Machine learning concept drift detection method (Apria)
My colleagues quietly told me that flying Book notification can still play like this
The block:usdd has strong growth momentum
Li Kou brush question diary /day7/6.30
Improve the accuracy of 3D reconstruction of complex scenes | segmentation of UAV Remote Sensing Images Based on paddleseg
未来几年中,软件测试的几大趋势是什么?
Li Kou brush question diary /day8/7.1
Torchdrug tutorial
力扣刷题日记/day3/2022.6.25
Unity makes revolving door, sliding door, cabinet door drawer, click the effect of automatic door opening and closing, and automatically play the sound effect (with editor extension code)