设计模式讨论

2023-09-07 11:25:03 +08:00
 zficode

现在我正在设计一个轮子,它有如下 5 步:

A -> B -> C -> D -> E

现在我有一个配置文件,需要根据配置文件中的 type 在每一步进行一些逻辑调整。

后面框架拓展后,type 可能越来越多,且支持插件机制。

所以想问问各位大佬,有没有一种设计模式,去很好的封装这样的逻辑去支持拓展。

设计语言是 JavaScript 。

1170 次点击
所在节点    编程
6 条回复
LHM
2023-09-07 11:29:28 +08:00
策略?
tyzandhr
2023-09-07 11:38:54 +08:00
直接传函数,无需设计模式
f0rger
2023-09-07 12:40:42 +08:00
直接用 express 的中间件方式处理就好了吧
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);
weixiangzhe
2023-09-07 14:33:09 +08:00
这个不该是标准的 责任链 吗 看这个 https://refactoringguru.cn/design-patterns/chain-of-responsibility
zficode
2023-09-07 14:49:42 +08:00
@taotaodaddy 感谢,但是这些步骤所有 type 都会执行,只是每个步骤都会有自己不同的逻辑

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/971664

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX