现在的位置: 首页 > 综合 > 正文

工厂方法模式的探讨

2012年02月29日 ⁄ 综合 ⁄ 共 1458字 ⁄ 字号 评论关闭
工厂方法模式是为了解决简单工厂模式,因对象增加,需修改工厂类,违反了开闭原则还出现了工厂方法模式。现在随着反射技术的应用也完全解决了这个问题。

 1public class DataAccessHelper {
 2    public static DataAccess GetDataAccess(string objectName) {
 3      string dataAccessStringType = ConfigurationManager.AppSettings["aspnet_staterKits_TimeTracker_DataAccessLayerType" + objectName];
 4      if (String.IsNullOrEmpty(dataAccessStringType)) {
 5        throw (new NullReferenceException("ConnectionString configuration is missing from you web.config. It should contain  <connectionStrings> <add key=\"aspnet_staterKits_TimeTracker\" value=\"Server=(local);Integrated Security=True;Database=Issue_Tracker\" </connectionStrings>"));
 6      }

 7      else {
 8        Type dataAccessType = Type.GetType(dataAccessStringType);
 9        if (dataAccessType == null{
10          throw (new NullReferenceException("DataAccessType can not be found"));
11        }

12        Type tp = Type.GetType("ASPNET.StarterKit.DataAccessLayer.DataAccess");
13        if (!tp.IsAssignableFrom(dataAccessType)) {
14          throw (new ArgumentException("DataAccessType does not inherits from ASPNET.StarterKit.DataAccessLayer.DataAccess "));
15
16        }

17        DataAccess dc = (DataAccess)Activator.CreateInstance(dataAccessType);
18        return (dc);
19      }

20    }

21  }
 

工厂方法模式 是通过“子类化”来 解决创建类的变化。
通过“配置信息+反射”也确实可以 解决创建类的变化,这种做法在.NET一些项目中也很常用。
这两种其实各有各的用武之地,难有A取代B的定论。不过反射的动态机制确实在某些场合更为灵活,但是它有着类型不安全的隐患。

结论:
工厂方法模式,优点:标准、规范。缺点:增加了不少类。
配置信息+反射,优点:规范、代码量少。缺点:存在类型的不安全性

抱歉!评论已关闭.