1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
5
namespace DataAccessFactory
6
{
7
public class MsSqlDataAccessFactory : IDataAccessFactory
8
{
9
10
IDataAccessFactory 成员
19
}
20
}
21
using System;2
using System.Collections.Generic;3
using System.Text;4

5
namespace DataAccessFactory6
{7
public class MsSqlDataAccessFactory : IDataAccessFactory8
{9

10
IDataAccessFactory 成员19
}20
}21

1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
5
namespace DataAccessFactory
6
{
7
public class OleDBDataAccessFactory : IDataAccessFactory
8
{
9
10
IDataAccessFactory 成员
19
}
20
}
21
using System;2
using System.Collections.Generic;3
using System.Text;4

5
namespace DataAccessFactory6
{7
public class OleDBDataAccessFactory : IDataAccessFactory8
{9

10
IDataAccessFactory 成员19
}20
}21

1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
using System.Configuration;
5
namespace DataAccessFactory
6
{
7
public class Config
8
{
9
public static IDataAccess GetDataAccess()
10
{
11
switch (ConfigurationSettings.AppSettings["dataprovider"].ToLower())
12
{
13
case "mssql":
14
return new MsSqlDataAccessFactory().GetDataAccessInstance();
15
case "oledb":
16
return new OleDBDataAccessFactory().GetDataAccessInstance ();
17
default :
18
return new OleDBDataAccessFactory().GetDataAccessInstance() ;
19
}
20
}
21
22
}
23
}
24
using System;2
using System.Collections.Generic;3
using System.Text;4
using System.Configuration; 5
namespace DataAccessFactory6
{7
public class Config8
{9
public static IDataAccess GetDataAccess()10
{11
switch (ConfigurationSettings.AppSettings["dataprovider"].ToLower())12
{13
case "mssql":14
return new MsSqlDataAccessFactory().GetDataAccessInstance();15
case "oledb":16
return new OleDBDataAccessFactory().GetDataAccessInstance ();17
default :18
return new OleDBDataAccessFactory().GetDataAccessInstance() ;19
}20
}21

22
}23
}24

IDataAccessFactory :用来定义取得数据访问方法
MsSqlDataAccessFactory:Sqlserver工厂,创建Sqlserver访问类
同理OracleDataAccessFactory
IDataAccess:定义了常用数据库访问方法
MsSqlServer:实现sqlServer数据库访问方法
同理Oracle
Configuration:根据配置文件.判断当前系统应该用哪个数据库访问模式.
应用的场景:
创建出不同产品等级结构的同一产品族的所有对象.
有一个很好的地方,就是降低了client程序和实际调用的对象之间的耦合性降到了最低,程序员根本就不需要去关心所调用的对象的生成规则和实现.当出现调用的对象需要修改的时候,我们也只需要修改一处就可以了.自己写了个代码,数据库访问的,支持不同类型的数据库
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
using System.Data;
5
namespace DataAccessFactory
6
{
7
public interface IDataAccess
8
{
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;

namespace DataAccessFactory
{
public class OleDB:IDataAccess
{
public void ExecuteNoQuery(IDbCommand OleCmd)
{
throw new System.NotImplementedException();
}
}
}
9
void ExecuteNoQuery(IDbCommand cmd);
10
}
11
}
using System;2
using System.Collections.Generic;3
using System.Text;4
using System.Data;5
namespace DataAccessFactory6
{7
public interface IDataAccess8
{
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb; 
namespace DataAccessFactory
{
public class OleDB:IDataAccess
{
public void ExecuteNoQuery(IDbCommand OleCmd)
{
throw new System.NotImplementedException();
}
}
}
9
void ExecuteNoQuery(IDbCommand cmd);10
}11
}


浙公网安备 33010602011771号