现在我正在设计一个轮子,它有如下 5 步:
A -> B -> C -> D -> E
现在我有一个配置文件,需要根据配置文件中的 type
在每一步进行一些逻辑调整。
后面框架拓展后,type 可能越来越多,且支持插件机制。
所以想问问各位大佬,有没有一种设计模式,去很好的封装这样的逻辑去支持拓展。
设计语言是 Javascript 。
![]() | 1 Macs 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 都会执行,只是每个步骤都会有自己不同的逻辑 |