工厂模式+配置文件+反射 实现数据库访问程序

控制台代码:

ExpandedBlockStart.gif 代码
  1  using  System;
  2  using  System.Collections.Generic;
  3  using  System.Text;
  4  using  System.Reflection;              // 反射命名空间
  5  using  System.Configuration;
  6 
  7  namespace  AbstractorFactory
  8  {
  9       class  Program
 10      {
 11           static   void  Main( string [] args)
 12          {
 13              User user  =   new  User();
 14              IUser iu  =  DataAccess.CreateUser();
 15              iu.Insert(user);
 16              iu.GetUser( 1 );
 17               // IFactory factory = new AccessFactory();
 18               // IUser iu = factory.CreateUser();
 19               // iu.Insert(user);
 20               // iu.GetUser(1);
 21              Console.ReadLine();
 22          }
 23      }
 24       interface  IUser
 25      {
 26           void  Insert(User user);
 27          User GetUser( int  id);
 28      }
 29       class  User
 30      {
 31           private   int  _id;
 32 
 33           public   int  Id
 34          {
 35               get  {  return  _id; }
 36               set  { _id  =  value; }
 37          }
 38           private   string  _name;
 39 
 40           public   string  Name
 41          {
 42               get  {  return  _name; }
 43               set  { _name  =  value; }
 44          }
 45      }
 46       class  SqlserverUser:IUser
 47      {
 48           public   void  Insert(User user)
 49          {
 50              Console.WriteLine( " 在Sql server中给User表增加一条记录 " );
 51          }
 52           public  User GetUser( int  id)
 53          {
 54              Console.WriteLine( " 在Sql server中根据id得到User表中的一条记录 " );
 55               return   null ;
 56          }
 57      }
 58       class  AccessUser : IUser
 59      {
 60           public   void  Insert(User user)
 61          {
 62              Console.WriteLine( " 在Access中给User表增加一条记录 " );
 63          }
 64           public  User GetUser( int  id)
 65          {
 66              Console.WriteLine( " 在Access中根据id得到User表中的一条记录 " );
 67               return   null ;
 68          }
 69      }
 70       #region  抽象工厂模式
 71       // interface IFactory
 72       // {
 73       //     IUser CreateUser();
 74       // }
 75       // class SqlServerFactory : IFactory
 76       // {
 77       //     public IUser CreateUser()
 78       //     {
 79       //         return new SqlserverUser();
 80       //     }
 81       // }
 82       // class AccessFactory : IFactory
 83       // {
 84       //     public IUser CreateUser()
 85       //     {
 86       //         return new AccessUser();
 87       //     }
 88       // }
 89       #endregion
 90       class  DataAccess
 91      {
 92           private   static   readonly   string  db  =  ConfigurationSettings.AppSettings[ " db " ];   
 93           private   static   readonly   string  assemblyName  =   " AbstractorFactory "
 94 
 95           public   static  IUser CreateUser()
 96          {
 97               // 抽象工厂模式
 98               // IUse result=null;
 99               // switch (db)
100               // {
101               //     case "Sqlserver":
102               //         result = new SqlserverUser();
103               //         break;
104               //     case "AccessUser":
105               //         result = new AccessUser();
106               //         break;
107               // }
108               string  className  =  assemblyName  +   " . "   +  db  +   " User " ;
109              IUser result  = (IUser)Assembly.Load(assemblyName).CreateInstance(className);    // 利用反射技术实例化user.
110               return  result;
111          }
112      }
113  }

app.config 文件

1  <? xml version = " 1.0 "  encoding = " utf-8 "   ?>  
2  < configuration >
3     < appSettings >
4       < add key = " db "  value = " Sqlserver " />
5     </ appSettings >
6  </ configuration >


 

 

 

转载于:https://www.cnblogs.com/gooliugle/archive/2010/04/27/1722368.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值