我试图解决的一般问题是特定方法的代码变得过大,因为大部分逻辑在特定用户之间开始大不相同。例如,为了确定客户X的最佳运输方法,与客户A,B,C确定相同的东西时,要考虑许多不同的因素和逻辑......
这似乎是使用策略模式进行重构的一个很好的候选者,但我想知道是否,因为有很多很多客户端,每个客户端可能需要对其逻辑进行特定调整,我最好使用脚本语言封装这个逻辑,而不是需要为需要定制逻辑的客户端创建新的策略实现?
答案 0 :(得分:1)
我看到你正在使用.Net。
根据我的经验,两者都是可能的,使用脚本的单个问题是你必须使用反射,并且在代码出现问题时很难调试。
Boo非常容易使用语言,最好使用Compiler API来确保至少编译用户的代码!
至于我,如果你想验证/测试用户代码,并且你想要面对多个交互(可以改变),我会使用的不是策略,而是像:
管道和过滤器(http://msdn.microsoft.com/en-us/library/dn568100.aspx)
图形构建器(使用JSon或.Xml或任何DSL来定义组件之间的关系)
每个节点的设置对话框(如果您有一些预定义的参数)
这将避免脚本编写错误且难以调试的情况。
此外,它还使您的软件可组合且可测试,如果用户引入的数据无效,您可以添加以后的日志记录或其他关键组件。