数据提供者或工厂

时间:2014-02-06 14:50:36

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

我经常对设计术语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这个让我很困惑

3 个答案:

答案 0 :(得分:2)

总的来说,我认为没关系。更重要的是,您的命名是一致的。

如果您将其命名为Provider,它仍然是工厂模式。工厂模式并不一定意味着您需要使用Factory对其进行后缀,只要您对代码的用户显而易见,您可以选择对内容进行命名,只要它对您的代码显而易见,您就可以了。

答案 1 :(得分:1)

Imho,一般来说 - 提供者“提供”任何功能(通常是高度专业化的),除了创建/构建对象,例如DataProvider或SecurityProvider。对于创建/构建,存在分离的抽象(模式),如Factory / FactoryMethod / Builder等...

答案 2 :(得分:0)

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