如何根据客户在应用程序中选择策略

本文关键字:选择 策略 应用程序 何根 客户 | 更新日期: 2023-09-27 18:14:44

在我工作的公司里,我们正在开发一个应用程序,被不同的客户(其他公司)使用。应用程序的核心是相同的,但是当涉及到一些细节时,每个客户都有自己的要求。

我认为处理这个问题的方法是通过向需要使用它的组件注入适当的策略来实现策略模式。

我的问题是,是否有一种方法可以知道根据正在使用应用程序的客户注入哪种策略实现,而不避免"情况"或"如果不是"?

如何在实际应用中实现它?

public IStrategy GetStrategy(string customerName) {
    switch(customerName) {
        case "customer1":
            return new Strategy1();
        case "customer2":
            return new Strategy2();
    }
}
编辑:

作为这个问题的公认答案(没有'开关')表明,"策略不是一个神奇的反切换解决方案"。

还有其他的意见吗?

如何根据客户在应用程序中选择策略

传递一个strategyName参数而不是customerName如何?我的意思是,如果您从数据库中检索customerName,请为策略名称添加一列(必须是策略类名称)。然后,使用该strategyName调用GetStrategy方法并使用Activator。CreateInstance方法创建策略类实例。

如何使用活化剂。调用CreateInstance (MSDN)

活化剂。调用CreateInstance示例