我现在了解工厂设计模式背后的理论,但似乎找不到任何实际使用的例子。有人可以提供一个吗?
问问题
2834 次
2 回答
4
工厂设计有几种变体:抽象工厂、工厂方法等。由于您对现实世界的示例感兴趣,我想我会分享我所做的。
作为一个例子,我使用了一个数据访问工厂来返回一个数据访问类的具体实例。逻辑类不知道也不关心正在使用哪个数据库;它只是向工厂询问数据类,然后使用该数据类。
这是我的 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();
业务逻辑与数据访问层完全解耦。希望有帮助。
于 2012-04-05T22:38:21.607 回答
1
由于您的问题非常笼统,因此仅提供有关该主题的一些链接以及示例等:
- http://www.dotnetperls.com/factory
- 工厂设计模式(需要批评)
- http://www.dofactory.com/Patterns/PatternAbstract.aspx#_self2
- http://www.codeproject.com/Articles/57421/Design-Patterns-Part-2-The-Factory-Pattern
该模式在 .NET 框架中使用 - 例如与WebRequest
.
于 2012-04-05T15:13:26.550 回答