认真的程序员

勤于思考 + 仔细思考 = 认真的程序员
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

谈谈我对工厂模式的理解?

Posted on 2010-11-08 12:56  rgzazq  阅读(586)  评论(1)    收藏  举报

最近刚完成一个利用“工厂模式”设计的项目,总是感觉不到这种工厂模式的优点在哪?请大家多都教诲。此项目的架构图如下:

工厂,我的理解是在一个独立的厂房内,可以生产出整个项目都用到的方法,它起到上接BLL层,下衔IDAL层的作用。

SQLDataFactory主要代码:

private static object CreateObject(string className)
        {
            string fullClassName = SQLData_Lib + "." + className;
            object dataComponent = CacheAccessor<object>.GetFromCache(className);
            if (dataComponent == null)
            {
                dataComponent = Assembly.Load(SQLData_Lib).CreateInstance(fullClassName);
                CacheAccessor<object>.SaveToCache(className, dataComponent);
            }
            return dataComponent;
        }

注:采用Factory模式+发射机制+缓存机制实现。

public static IDAL.ISystemUser CreateSystemUser()
        {
            try
            {
                return (IDAL.ISystemUser)CreateObject("SystemUserSqlDataProvider");
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

注:后台账号数据及操作访问接口。

BLL层主要代码:

private static readonly IArea AreaDAL = SQLDataFactory.CreateProvinceCity();

注:创建接口对象,目的是调用继承接口的DAL层中对应的类。实现的方法是:调用工厂DataFactory中的静态方法。

SQLDataDAL主要代码:

此层中并没有特殊的代码,就是一般的增删改查的SQL语句。

我们在调用哪个方法时,直接调用BLL层中的静态方法,即可完成。

 

项目做完了,回头想想,感觉这种工厂模式的优势不是很明显呢?请大家多多指教。。。。。。!小弟不胜感激。