码迷,mamicode.com
首页 > 其他好文 > 详细

一步一步搭建开发框架(二)工厂模式

时间:2014-08-05 00:32:38      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   os   io   文件   

1,从(一)说起,面对程序中很有地方都用到Dal层的实例,我们想到了,将创建实例写到一个单独的方法中,由这个方法来维护实例的变化,这样,当需要更改实例的时候,我们只需要更改一下这个方法即可,而不必在程序中到处修改!因此便有了简单工厂。

bubuko.com,布布扣
 1 namespace PCITC.OA.DalFactory
 2 {
 3     public class DalFactory
 4     {
 5         public static IDal.IUserInforDal GetUserInforDal()
 6         {
 7             return new PCITC.OA.Dal.UserInforDal();
 8         }
 9     }
10 }
11 public class UserInforService
12     {
13         
14         //使用EfDal
15         //private UserInforDal userInforDal = new UserInforDal();
16         //使用AdoNetDal
17         //private PCITC.OA.AdoNetDal.UserInforDal userInforDal = new PCITC.OA.AdoNetDal.UserInforDal();
18         private IDal.IUserInforDal userInforDal = PCITC.OA.DalFactory.DalFactory.GetUserInforDal();
19         public UserInfor Add(UserInfor userInfor)
20         {
21             return userInforDal.Add(userInfor);
22         }
23     }
View Code

 如此Bll层仅仅依赖简单工厂这个程序集,需要修改实例的时候,只需要更改简单工厂一处即可!而且即使网站发布也可以,编译一下程序集替换,然后重启IIS,便可以搞定!

2,这样框架又完美了一部分,但即使这样,如果我们需要更改实例的话,还是需要更改代码,然后编译替换程序集。我们希望做到一种更完美的境界,面对需求的变化,不需要更改代码,只需要更改一下配置就搞定!因此,抽象工厂诞生了!

通过反射和配置文件,我们可以实现抽象工厂,真正做到面对需求的变化,一行代码都不改!

bubuko.com,布布扣
 1 public class DalSimpleFactory
 2     {
 3         public static IDal.IUserInforDal GetUserInforDal()
 4         {
 5             //return new PCITC.OA.Dal.UserInforDal();
 6             return GetInstance("PCITC.OA.Dal", "PCITC.OA.Dal." + "UserInforDal") as IDal.IUserInforDal;
 7 
 8         }
 9 
10         public static object GetInstance(string assemblyName,string typeName)
11         {
12             return Assembly.Load(assemblyName).CreateInstance(typeName);
13         }
14     }
View Code
bubuko.com,布布扣
<add key="Assembly" value="PCITC.OA.Dal"/>
    <add key="NameSpace" value="PCITC.OA.Dal"/>
    <!--<add key="Assembly" value="PCITC.OA.AdoNetDal"/>
    <add key="NameSpace" value="PCITC.OA.AdoNetDal"/>-->
View Code
bubuko.com,布布扣
 1 public class DalSimpleFactory
 2     {
 3         private static string assemblyName = ConfigurationManager.AppSettings["Assembly"].ToString();
 4         private static string spaceName = ConfigurationManager.AppSettings["NameSpace"].ToString();  
 5         public static IDal.IUserInforDal GetUserInforDal()
 6         {
 7             //return new PCITC.OA.Dal.UserInforDal();
 8             return GetInstance(assemblyName, string.Format("{0}.{1}",spaceName,"UserInforDal")) as IDal.IUserInforDal;
 9 
10         }
11 
12         public static object GetInstance(string assemblyName,string typeName)
13         {
14             return Assembly.Load(assemblyName).CreateInstance(typeName);
15         }
16     }
View Code

bubuko.com,布布扣

一步一步搭建开发框架(二)工厂模式,布布扣,bubuko.com

一步一步搭建开发框架(二)工厂模式

标签:style   blog   http   color   使用   os   io   文件   

原文地址:http://www.cnblogs.com/wanren/p/3891080.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!