知识大全 C#设计模式之简单工厂篇
Posted 知
篇首语:幼苗需要土壤的滋养,孩子需要教师的爱护。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 C#设计模式之简单工厂篇相关的知识,希望对你有一定的参考价值。
C#设计模式之简单工厂篇 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
首先定义一个接口 具体名为Idatabase 在这个接口中 定义好数据库操作的方法名和参数 以及返回值 本案例中我定义如下方法
public interface IDatabase
bool Connect(string ConnectString);
bool Open();
bool Command(string SQL);
void Close();
重要提醒 接口一生唯谨慎 定义大事不糊涂 编写接口时一定要考虑周全 并对参数 返回值进行反复推敲 为什么?因为所有的实现类都是要根据该接口的规范进行代码具体编写 也即接口的定义是公用的 一旦改动了接口 后果就是所有的实现类也都必须相应调整
然后就是编写具体的实现类了 客户要求多少不同类型的数据库 你就定义多少个Idatabase的实现类 虽然工作量大了点 可当你看到客户满意的笑容时 你心里也就会有一种由衷的幸福感 好了 SqlServer实现类代码如下
public class SqlServer : IDatabase
SqlConnection conn;
SqlCommand mand;
public bool Connect(string ConnectString)
try
conn = new SqlConnection(ConnectString);
return true;
catch(SqlException)
return false;
public bool Open()
try
conn Open();
return true;
catch(SqlException)
return false;
public bool Command(string SQL)
try
mand = new SqlCommand(SQL conn);
mand ExecuteNonQuery();
return true;
catch(SqlException)
return false;
public void Close()
conn Close();
conn Dispose();
呵呵 有点长 咬著牙读完 心里明白了就会很舒服的 如果你现在有这种感觉了 好 再接再厉 再为Oracle实现类编写具体代码吧 依葫芦画瓢 大家有空就画一下吧 我就画个雏形了
public class Oracle : IDatabase
public Oracle()
public bool Connect(string ConnectString)
return true;
public bool Open()
return true;
public bool Command(string SQL)
return true;
public void Close()
嗯 不错 你有多少种数据库就编写不同的实现类代码吧 这里就不赘述了 接下来呢?聪明的读者一定会想到这个问题 这个接口和这么多的实现类怎么用啊?我们再定义一个称之为工厂的类 由它来决定选用哪种数据库为进行操作 这个类比较简单
public class Factory
public static IDatabase SelectDatabase(string DatabaseType)
switch(DatabaseType)
case SqlServer :
return new SqlServer();
case Oracle :
return new Oracle();
default:
return new SqlServer();
看明白了吗?好了 我们该让尊敬的 永远高贵的客户出场了 只有他 唯有他才有决定用哪种数据库的最高权限 你看 他这样用
public class Client
public static void Main()
//Get the database information from Web Config
string DBType = ConfigurationSettings AppSettings[ DBType ];
string DBConnectString = ConfigurationSettings AppSettings[ DBConn ];
IDatabase DB = Factory SelectDatabase(DBType);
//Connect the selected database
if(DB Connect(DBConnectString)==false)
Console WriteLine( The database can@#t be connected DBType);
return;
//Open database
if(DB Open()==false)
Console WriteLine( The database can@#t be opened the connect string is DBType DBConnectString);
return;
//Execute SQL Command
string SQL = update Order set price = price * where productID = @# @# ;
if(DB Command(SQL))
//Do something
else
Console WriteLine( The Operator is not success SQL statament is SQL);
DB Close();
return;
DB Close();
好了 工程峻工了 你们明白了没有?
思考题 简单工厂的应用场合和局限性?
cha138/Article/program/net/201311/11462相关参考
用Delphi语言来学设计模式之简单工厂篇 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 
C#设计模式编程之抽象工厂模式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 抽象工厂(Abst
用Delphi2005学设计模式之工厂方法篇 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本文完成
C#中有两种基本数据类型值类型和引用类型值类型包括简单类型结构类型枚举类型引用类型包括Object类型类类型接口代表元字符串类型数组 说白了这篇就是扩展intstringdoubleDate
C#GDI+编程之基础篇 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一关于GDI+ 从本质
上午看到一个兄弟的文章很辛苦的想实现不改代码只改配置来访问不同类型的数据库自己去实现工厂模式精神可嘉但是殊不知c#已经自己为不同类型数据库的访问做了一个工厂在这里我就把使用工厂的例子贴出来供不知道
正如同笔者在一节里介绍的工厂模式有简单工厂模式工厂方法模式和抽象工厂模式几种形态简单工厂模式已经在前面作过介绍在简单工厂模式中一个工厂类处于对产品类实例化调用的中心位置上它决定那一个产品类应当被实
工厂模式有简单工厂模式工厂方法模式和抽象工厂模式几种形态其中简单工厂模式和工厂方法模式已经在前面作过介绍在这里我们来介绍抽象工厂模式 抽象工厂模式是所有形态的工厂模式中最为抽象和最具广泛性的一种
知识大全 JavaScript模式之工厂模式(Factory)应用介绍
JavaScript模式之工厂模式(Factory)应用介绍 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看
Java设计模式之修饰模式篇 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 最近我给女朋友买了一