现在我正在设计一个轮子,它有如下 5 步:
A -> B -> C -> D -> E
现在我有一个配置文件,需要根据配置文件中的 type
在每一步进行一些逻辑调整。
后面框架拓展后,type 可能越来越多,且支持插件机制。
所以想问问各位大佬,有没有一种设计模式,去很好的封装这样的逻辑去支持拓展。
设计语言是 JavaScript 。
1
LHM 2023-09-07 11:29:28 +08:00
策略?
|
2
tyzandhr 2023-09-07 11:38:54 +08:00 via Android
直接传函数,无需设计模式
|
3
f0rger 2023-09-07 12:40:42 +08:00 via iPhone
直接用 express 的中间件方式处理就好了吧
|
4
taotaodaddy 2023-09-07 14:22:44 +08:00
function stepA(params) {
//... } function stepB(params) { //... } //... function compose(type) { switch(type) { case 'A': return composeWith(stepA, stepB, stepC, stepD, stepE); case 'B': return composeWith(stepB, stepC, stepD, stepE); //... } } // 组合执行一系列函数 function composeWith(...fns) { return function(params) { return fns.reduce( (acc, fn) => fn(acc), params ); } } const flow = compose(type); flow(params); |
5
weixiangzhe 2023-09-07 14:33:09 +08:00
这个不该是标准的 责任链 吗 看这个 https://refactoringguru.cn/design-patterns/chain-of-responsibility
|
6
zficode OP @taotaodaddy 感谢,但是这些步骤所有 type 都会执行,只是每个步骤都会有自己不同的逻辑
|