1

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

4

2 回答 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

由于您的问题非常笼统,因此仅提供有关该主题的一些链接以及示例等:

该模式在 .NET 框架中使用 - 例如与WebRequest.

于 2012-04-05T15:13:26.550 回答