策略模式在日常开发中的使用场景还是比较多的,举一个常见的例子,我们平时很可能会处理表格中数据项的操作功能,例如:

(图片是从 element-plus 官方文档截的。)
日常开发中,我们往往会处理好几个数据项的操作,每个操作都需要执行不同的逻辑。而处理这些逻辑时,我们往往会考虑使用 switch 语句或者 ifelse 语句,去根据不同操作执行不同的逻辑。
其实这种场景就非常适合用策略模式来处理,策略模式能有效的减少代码中 ifelse 语句的数量,并且它利于维护,它符合【开放-封闭】原则,以后添加功能时,只需要在原来基础上再加策略,而不用改动核心逻辑,引入 bug 的可能性较低。
例如我们有 a,b,c,d 四种操作,每种操作分别对应不同后续需要执行的逻辑:
1 | const handleA = (row) => { |
我们把这些逻辑都封装好,放到一个对象里:
1 | const optObj = { |
然后写一个函数来承接操作,该函数会调用 optObj 来完成具体逻辑的分发处理:
1 | const handleOpt = (opt) => { |
这样,一个策略模式的简单应用就完成了。