1
mk0114 2023-05-08 15:48:59 +08:00
把每个步骤分割成类呢,有一个 StepList ,需要执行什么步骤就生成并添加进去,然后按顺序执行。也就是用组合代替继承。
|
2
NoKey OP @mk0114 这个方法不错。一些场景下可能有问题,比如,我们要把步骤一和步骤二进行交换,模板方法的优势就是,修改 execute 就好了,其他代码都不用动,list 装进去的方法,就需要全部改一轮。
|
3
mk0114 2023-05-08 17:15:27 +08:00
不用全部步骤都放到一个集合中,按照你的模板,可以分成 step1234 四个集合。当然我这是在 Unity 编辑器中添加组件很方便,如果你要是纯代码就不太直观了。改成 yml 等配置的形式可能更好吧。
|
4
yule111222 2023-05-08 17:26:39 +08:00
用高阶函数把函数作为返回值取代实例类,外部调用协调器从之前的获取实例类变成获取函数
|
5
leokun 2023-05-08 17:30:19 +08:00
不知道你这个是什么语言,如果是 js 的话可以用高阶函数来组合,自己实现 execute 和 createStep 两个函数
execute( createStep((stateSetter)=>{ stateSetter(...) }), createStep((stateSetter)=>{ stateSetter(...) }), createStep((stateSetter)=>{ stateSetter(...) }) ) createStep 可以返回函数,也可以只返回结构,这样就可以复用 step |
6
yibo2018 2023-05-09 11:24:05 +08:00
责任链模式可以吗
|