【问题标题】:Data Provider or Factory数据提供者或工厂
【发布时间】:2014-03-03 14:06:45
【问题描述】:

我经常对设计术语providerfactory 感到困惑。下面是我根据提供的名称选择不同数据库上下文的代码。我在这里使用了工厂模式,所以我将其命名为DataContextFactory。这对这种方法是否正确?还是我需要将其更改为 DataContextProvider?这是否意味着不同的实现?

public class DataContextFactory
{
    public static DataContext GetDataContext(string databaseName)
    {
        switch (databaseName.ToLower())
        {
            case "app":
                return new ApplicationDataContext();
            case "customer":
                return new CustomerDataContext();
            default:
                return new TestDataContext();
        }
    }
}

https://stackoverflow.com/a/1849645/1559213这个让我很困惑

【问题讨论】:

    标签: c# asp.net design-patterns architecture


    【解决方案1】:

    我的两分钱:取决于你想得到什么,如果你想获取数据,那么创建一个数据提供者,如果你想要上下文,你可以使用上下文工厂。更有可能您最终会同时使用两者。您可以在数据提供者中注入上下文,该提供者使用上下文为您带来数据。

    【讨论】:

      【解决方案2】:

      恕我直言,一般来说 - 提供者“提供”除创建/构建对象之外的任何功能(通常是高度专业化的),例如数据提供者或安全提供者。对于创建/构建,有分离的抽象(模式),例如 Factory/FactoryMethod/Builder 等...

      【讨论】:

      • 双倍。所以在这种情况下,它是工厂,因为它实际上创建了提供者(存储库)。
      【解决方案3】:

      一般来说,我会说没关系。更重要的是你的命名是一致的。

      如果您将其命名为 Provider,它仍然是工厂模式。工厂模式并不一定意味着您需要使用工厂作为后缀,这只是您选择命名事物的方式,只要您的代码用户清楚它在做什么就可以了

      【讨论】:

      • 没什么好混淆的。你在那里有一个工厂......然后 DataContext 是一个提供者。
      猜你喜欢
      • 1970-01-01
      • 2015-07-22
      • 2014-02-10
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      • 2011-04-15
      • 2020-04-07
      • 1970-01-01
      相关资源
      最近更新 更多