为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

简单工厂模式

2017-09-02 7页 doc 19KB 10阅读

用户头像

is_482581

暂无简介

举报
简单工厂模式简单工厂模式 首先定义一个接口,具体名为Idatabase,在这个接口中,定义好数据库操作的方法名和参数,以及返回值,本案例中我定义如下方法: public interface IDatabase { bool Connect(string ConnectString); bool Open(); bool Command(string SQL); void Close(); } 重要提醒:“接口一生唯谨慎,定义大事不糊涂”,编写接口时一定要考虑周全,并对参数、返回值进行反复推敲,为什么,因为所有的实现类都是要...
简单工厂模式
简单工厂模式 首先定义一个接口,具体名为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 command; //实现接口的数据库连接方法 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 { command = new SqlCommand(SQL,conn); command.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 {0} can't be connected.",DBType); return; } //Open database. if(DB.Open()==false) { Console.WriteLine("The database {0} can't be opened, the connect string is {1}.",DBType,DBConnectString); return; } //Execute SQL Command. string SQL = "update Order set price = price * 0.07 where productID = '002'"; if(DB.Command(SQL)) { //Do something... } else { Console.WriteLine("The Operator is not success. SQL statament is {0}",SQL); DB.Close(); return; } DB.Close(); } } OK!以上是一个简单工厂模式实例...
/
本文档为【简单工厂模式】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索