Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中使用factory设计模式的示例_C#_Oop_Design Patterns_Factory Pattern - Fatal编程技术网

C# 在C中使用factory设计模式的示例

C# 在C中使用factory设计模式的示例,c#,oop,design-patterns,factory-pattern,C#,Oop,Design Patterns,Factory Pattern,我现在理解了工厂设计模式背后的理论,但似乎找不到任何实际的例子。有人能提供一个吗?因为你的问题非常笼统,只是关于这个主题的一些链接,带有示例等: 该模式在.NET framework中使用-例如与.一起使用,因为您的问题非常笼统,只是主题上的一些链接带有示例等: 该模式在.NET framework中使用-例如与.有几种工厂设计变体:抽象工厂、工厂方法等。。。既然你对一个真实世界的例子感兴趣,我想我应该分享一下我所做的 例如,我使用数据访问工厂返回数据访问类的具体实例。逻辑类不知道或不关心正在使

我现在理解了工厂设计模式背后的理论,但似乎找不到任何实际的例子。有人能提供一个吗?

因为你的问题非常笼统,只是关于这个主题的一些链接,带有示例等:


该模式在.NET framework中使用-例如与.

一起使用,因为您的问题非常笼统,只是主题上的一些链接带有示例等:


该模式在.NET framework中使用-例如与.

有几种工厂设计变体:抽象工厂、工厂方法等。。。既然你对一个真实世界的例子感兴趣,我想我应该分享一下我所做的

例如,我使用数据访问工厂返回数据访问类的具体实例。逻辑类不知道或不关心正在使用哪个数据库;它只是向工厂请求一个数据类,然后使用该数据类

这是我的DataAccessFactory类中的方法。它负责确定要使用的数据类,并将其返回给调用者:

public static T GetDataInterface<T>() where T : class
{
    Assembly assembly = Assembly.GetExecutingAssembly();

    T theObject = (from t in assembly.GetTypes()
                   where t.GetInterfaces().Contains(typeof(T))
                     && t.GetConstructor(Type.EmptyTypes) != null
                     && t.Namespace == _namespace
                   select Activator.CreateInstance(t) as T).FirstOrDefault() as T;

    return theObject as T;
}
这就是我的一个业务逻辑类发出DAL请求的方式:

return DataAccessFactory.GetDataInterface<IApplicationData>().GetAll();

业务逻辑与数据访问层完全解耦。希望有帮助。

工厂设计有几种变体:抽象工厂、工厂方法等。。。既然你对一个真实世界的例子感兴趣,我想我应该分享一下我所做的

例如,我使用数据访问工厂返回数据访问类的具体实例。逻辑类不知道或不关心正在使用哪个数据库;它只是向工厂请求一个数据类,然后使用该数据类

这是我的DataAccessFactory类中的方法。它负责确定要使用的数据类,并将其返回给调用者:

public static T GetDataInterface<T>() where T : class
{
    Assembly assembly = Assembly.GetExecutingAssembly();

    T theObject = (from t in assembly.GetTypes()
                   where t.GetInterfaces().Contains(typeof(T))
                     && t.GetConstructor(Type.EmptyTypes) != null
                     && t.Namespace == _namespace
                   select Activator.CreateInstance(t) as T).FirstOrDefault() as T;

    return theObject as T;
}
这就是我的一个业务逻辑类发出DAL请求的方式:

return DataAccessFactory.GetDataInterface<IApplicationData>().GetAll();

业务逻辑与数据访问层完全解耦。希望这能有所帮助。

这并不是非常普遍——我想问一个现实的例子,说明在哪里可以使用工厂设计模式。工厂设计模式示例的先进程度或方式取决于选择回答我的问题的人——最好能看到一系列示例+1不管怎样,谢谢你的回答,谢谢你的链接,我现在就看。@SkonJeet欢迎你:-添加了一个来自.NET framework的示例…它并不是非常通用-我要求提供一个可以使用factory设计模式的实际示例。工厂设计模式示例的先进程度或方式取决于选择回答我的问题的人——最好能看到一系列示例+1无论如何,谢谢你的回答,谢谢你的链接,我现在就看。@SkonJeet欢迎:-添加了一个来自.NET framework的示例…潮流-这个问题即将结束的唯一原因。至于其他原因,我洗耳恭听……随波逐流——这是这个问题即将结束的唯一原因。我洗耳恭听其他原因。。。