在我工作的公司中,我们正在开发从各种客户(其他公司)使用的应用程序。应用程序的核心是相同的,但是当涉及到一些细节时,每个客户都有自己的需求。如何在取决于客户的应用程序中选择策略
我认为解决这个问题的方法是通过向需要使用它的组件注入适当策略的策略模式。
我的问题是,有没有办法知道哪个策略实施注入取决于正在使用应用程序的客户,而不避免“案件”或“如果elses”?
如何在实际应用中实现它?
public IStrategy GetStrategy(string customerName) {
switch(customerName) {
case "customer1":
return new Strategy1();
case "customer2":
return new Strategy2();
}
}
编辑: 由于这个问题(Strategy Pattern with no 'switch' statements?)建议的接受的答案,“战略不是魔抗交换机解决方案。”
还有其他意见吗?
你有每个客户或通用的策略类型的客户可以从中选择一个自定义的策略类型? – guillaume31
在大多数情况下,每个客户都有一个策略。 – Khronos
关于你的编辑 - 接受的答案是非常真实的,但与你的问题没有多大关系。交换机和策略是关于决策的。您的问题与决策标准('“customer1”')的决策结果('Strategy1')匹配。有几十种技术手段可以实现这一点:配置文件中的键和值,数据库中的表,内存中的字典结构,客户名称的REST资源,您的名称。 – guillaume31