我应该使用工厂模式吗?

时间:2012-10-17 17:54:56

标签: c# design-patterns

我目前有一个名为ConfigProfile的类,它包含一个默认配置文件,当前设置等方法。此类在我的Profile服务内部使用。我认为最好只是让它成为一个真正的工厂,并为我们正在配置的每个产品创建适当的Profile Service。

    public string GetDefaultProfile(string product)
    {
        if (string.IsNullOrEmpty(product))
        {
            throw new ArgumentNullException("product");
        }

        string profile = null;

        if (product.Contains("Product 1", StringComparison.CurrentCultureIgnoreCase) ||
            product.Contains("product1", StringComparison.CurrentCultureIgnoreCase))
        {
            profile = Resources.product1DefaultProfile;
        }

        return profile;
    }

那里只有一个产品,但我们还有几个产品,这意味着我必须为每个产品添加更多的if语句。配置文件服务已经有一个接口,是我的大多数程序使用的。还有几种方法使用相同的做法。那么,根据产品名称返回相应配置文件服务的工厂是更好的解决方案还是我还能做些什么呢?

编辑:这是本课程中较简单的方法之一。更复杂的是从所需位置检索当前系统设置的那个。像所有产品都有IIS设置,但有些产品会有主题支持,而其他产品则有数据库配置要做。

1 个答案:

答案 0 :(得分:1)

工厂是一个非常好的解决方案。它允许您隐藏简单接口背后的配置复杂性。

如果您需要能够在运行时/启动时进行配置,请与策略结合使用。

两种解决方案 - 静态工厂或策略 - 都可以与Prototype结合使用。如果您经常使用相同的配置文件,原型将作为优化使用,并且它是只读的。

编辑:你可能已经在使用Prototype了。您的示例代码看起来像是在复制/引用配置文件,而不是将其构建为复杂的产品。