1

我目前有一个名为 ConfigProfile 工厂的类,它包含用于说默认配置文件、当前设置等的方法。我的个人资料服务在内部使用此类。我在想最好把它变成一个真正的工厂,然后为我们正在配置的每个产品创建适当的 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 设置,但有些产品支持主题,而另一些产品则需要数据库配置。

4

1 回答 1

1

工厂是一个很好的解决方案。它允许您将配置复杂性隐藏在一个简单的界面后面。

如果您需要能够在运行时/启动时对其进行配置,请结合 Strategy。

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

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

于 2012-10-18T07:24:43.393 回答