再谈Abstract Factory模式来实现数据库操作的类

时间:2022-09-08 20:23:23
在前面( http://www.cnblogs.com/helimin19/archive/2005/02/26/109535.html)我讲了关于利用 Factory Method来实现数据库操作的类,因为在里面控制数据库类型时采用了 简单工场模式,所以感觉不好,今天再看了抽象工场模式后,认为采用抽象工场模式比采用工场模式来实现数据库操作会更好些。下面让我平来看看采用抽象工场模式是如何实现的吧。
一。簡單的類圖
再谈Abstract Factory模式来实现数据库操作的类
二。抽象工場文件
再谈Abstract Factory模式来实现数据库操作的类using  System;
再谈Abstract Factory模式来实现数据库操作的类
再谈Abstract Factory模式来实现数据库操作的类
namespace  DBFactory.AbstractFactory
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类
{
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类    
/// <summary>抽象工場角色類</summary>
再谈Abstract Factory模式来实现数据库操作的类    public abstract class DBTypeFactory
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类    
{
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类        
public DBTypeFactory(){}
再谈Abstract Factory模式来实现数据库操作的类
再谈Abstract Factory模式来实现数据库操作的类        
public abstract DBFactory GetDB();
再谈Abstract Factory模式来实现数据库操作的类    }

再谈Abstract Factory模式来实现数据库操作的类
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类    
/// <summary>具體工場角色類</summary>
再谈Abstract Factory模式来实现数据库操作的类    public class SqlDataBase : DBTypeFactory
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类    
{
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类        
public SqlDataBase(){}
再谈Abstract Factory模式来实现数据库操作的类
再谈Abstract Factory模式来实现数据库操作的类        
public override DBFactory GetDB()
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类        
{
再谈Abstract Factory模式来实现数据库操作的类            
return new SqlFactory();
再谈Abstract Factory模式来实现数据库操作的类        }

再谈Abstract Factory模式来实现数据库操作的类    }

再谈Abstract Factory模式来实现数据库操作的类
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类    
/// <summary>具體工場角色類</summary>
再谈Abstract Factory模式来实现数据库操作的类    public class AccessDataBase : DBTypeFactory
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类    
{
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类        
public AccessDataBase(){}
再谈Abstract Factory模式来实现数据库操作的类
再谈Abstract Factory模式来实现数据库操作的类        
public override DBFactory GetDB()
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类        
{
再谈Abstract Factory模式来实现数据库操作的类            
return new AccessFactory();
再谈Abstract Factory模式来实现数据库操作的类        }

再谈Abstract Factory模式来实现数据库操作的类    }

再谈Abstract Factory模式来实现数据库操作的类}

再谈Abstract Factory模式来实现数据库操作的类

三。抽象產品文件
再谈Abstract Factory模式来实现数据库操作的类using  System;
再谈Abstract Factory模式来实现数据库操作的类
using  System.Data;
再谈Abstract Factory模式来实现数据库操作的类
using  System.Data.OleDb;
再谈Abstract Factory模式来实现数据库操作的类
using  System.Data.SqlClient;
再谈Abstract Factory模式来实现数据库操作的类
using  System.Configuration;
再谈Abstract Factory模式来实现数据库操作的类
再谈Abstract Factory模式来实现数据库操作的类
namespace  DBFactory.AbstractFactory
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类
{
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类    
/// <summary>抽象產品類</summary>
再谈Abstract Factory模式来实现数据库操作的类    public abstract class DBFactory
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类    
{
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类        
public DBFactory(){}
再谈Abstract Factory模式来实现数据库操作的类
再谈Abstract Factory模式来实现数据库操作的类        
private string connectionString;
再谈Abstract Factory模式来实现数据库操作的类
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类        
/// <summary>數據庫連接字符串</summary>
再谈Abstract Factory模式来实现数据库操作的类        public string ConnectionString
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类        
{
再谈Abstract Factory模式来实现数据库操作的类            
get
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类            
{
再谈Abstract Factory模式来实现数据库操作的类                
if(connectionString==null) connectionString = ConfigurationSettings.AppSettings["ConnectionString"];
再谈Abstract Factory模式来实现数据库操作的类                
return connectionString;
再谈Abstract Factory模式来实现数据库操作的类            }

再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类            
set{connectionString = value;}
再谈Abstract Factory模式来实现数据库操作的类        }

再谈Abstract Factory模式来实现数据库操作的类
再谈Abstract Factory模式来实现数据库操作的类        
public abstract DataSet DataSetExecuteSql(string sqlString);
再谈Abstract Factory模式来实现数据库操作的类        
public abstract IDataReader DataReaderExecuteSql(string sqlString);
再谈Abstract Factory模式来实现数据库操作的类    }

再谈Abstract Factory模式来实现数据库操作的类
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类    
/// <summary>具體產品類</summary>
再谈Abstract Factory模式来实现数据库操作的类    public class SqlFactory : DBFactory
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类    
{
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类        
public SqlFactory(){}
再谈Abstract Factory模式来实现数据库操作的类
再谈Abstract Factory模式来实现数据库操作的类        
public override IDataReader DataReaderExecuteSql(string sqlString)
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类        
{
再谈Abstract Factory模式来实现数据库操作的类            System.Data.SqlClient.SqlConnection conn 
= new System.Data.SqlClient.SqlConnection(ConnectionString);
再谈Abstract Factory模式来实现数据库操作的类            conn.Open();
再谈Abstract Factory模式来实现数据库操作的类            System.Data.SqlClient.SqlCommand comm 
= new System.Data.SqlClient.SqlCommand(sqlString,conn);
再谈Abstract Factory模式来实现数据库操作的类            
return comm.ExecuteReader();
再谈Abstract Factory模式来实现数据库操作的类        }

再谈Abstract Factory模式来实现数据库操作的类        
再谈Abstract Factory模式来实现数据库操作的类        
public override DataSet DataSetExecuteSql(string sqlString)
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类        
{
再谈Abstract Factory模式来实现数据库操作的类            DataSet ds 
= new DataSet();
再谈Abstract Factory模式来实现数据库操作的类            System.Data.SqlClient.SqlConnection conn 
= new System.Data.SqlClient.SqlConnection(ConnectionString);
再谈Abstract Factory模式来实现数据库操作的类            System.Data.SqlClient.SqlDataAdapter da 
= new System.Data.SqlClient.SqlDataAdapter(sqlString,conn);
再谈Abstract Factory模式来实现数据库操作的类            da.Fill(ds);
再谈Abstract Factory模式来实现数据库操作的类            
return ds;
再谈Abstract Factory模式来实现数据库操作的类        }

再谈Abstract Factory模式来实现数据库操作的类    }

再谈Abstract Factory模式来实现数据库操作的类
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类    
/// <summary>具體產品類</summary>
再谈Abstract Factory模式来实现数据库操作的类    public class AccessFactory : DBFactory
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类    
{
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类        
public AccessFactory(){}
再谈Abstract Factory模式来实现数据库操作的类
再谈Abstract Factory模式来实现数据库操作的类        
public override IDataReader DataReaderExecuteSql(string sqlString)
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类        
{
再谈Abstract Factory模式来实现数据库操作的类            OleDbConnection conn 
= new OleDbConnection(ConnectionString);
再谈Abstract Factory模式来实现数据库操作的类            conn.Open();
再谈Abstract Factory模式来实现数据库操作的类            OleDbCommand comm 
= new OleDbCommand(sqlString,conn);
再谈Abstract Factory模式来实现数据库操作的类            
return comm.ExecuteReader();
再谈Abstract Factory模式来实现数据库操作的类        }

再谈Abstract Factory模式来实现数据库操作的类        
再谈Abstract Factory模式来实现数据库操作的类        
public override DataSet DataSetExecuteSql(string sqlString)
再谈Abstract Factory模式来实现数据库操作的类再谈Abstract Factory模式来实现数据库操作的类        
{
再谈Abstract Factory模式来实现数据库操作的类            DataSet ds 
= new DataSet();
再谈Abstract Factory模式来实现数据库操作的类            OleDbConnection conn 
= new OleDbConnection(ConnectionString);
再谈Abstract Factory模式来实现数据库操作的类            OleDbDataAdapter da 
= new OleDbDataAdapter(sqlString,conn);
再谈Abstract Factory模式来实现数据库操作的类            da.Fill(ds);
再谈Abstract Factory模式来实现数据库操作的类            
return ds;
再谈Abstract Factory模式来实现数据库操作的类        }

再谈Abstract Factory模式来实现数据库操作的类    }

再谈Abstract Factory模式来实现数据库操作的类}

再谈Abstract Factory模式来实现数据库操作的类

以上就實現了一個簡單的采用抽象工場模式來實現數據庫操作的類,下面看看我們是如何調用的:
再谈Abstract Factory模式来实现数据库操作的类string  connString  =   " data source=192.168.1.9;initial catalog=sqldll;persist security info=False;user id=sa;password=123456;workstation id=Server;packet size=4096 " ;
再谈Abstract Factory模式来实现数据库操作的类            
string  commString  =   " select * from tbl_Vip " ;
再谈Abstract Factory模式来实现数据库操作的类
再谈Abstract Factory模式来实现数据库操作的类            DBTypeFactory dbtypefactory 
=   new  SqlDataBase(); // AccessDataBase();
再谈Abstract Factory模式来实现数据库操作的类
            DBFactory.AbstractFactory.DBFactory dbfactory  =  dbtypefactory.GetDB();
再谈Abstract Factory模式来实现数据库操作的类            dbfactory.ConnectionString 
=  connString;
再谈Abstract Factory模式来实现数据库操作的类            DataGrid1.DataSource 
=  dbfactory.DataSetExecuteSql(commString);
再谈Abstract Factory模式来实现数据库操作的类            DataGrid1.DataBind();

是不是與以上寫的關於工場方法模式實現數據庫操作的類相比更加簡單些:)


四.工場方法模式與抽象工場模式

从以上我们可以得出工场方法模式与抽象工场模式的区别,以及何时该采用工场方法模式何时该采用抽象工场模式来设计.

工场方法模式:用简单明了的话来说就是如一个生产镜片的工厂生产树脂镜片与玻璃镜片,那么何时该生产树脂镜片,何时该生产玻璃镜片呢。这就是工厂方法模式的实现.

再谈Abstract Factory模式来实现数据库操作的类

抽象工场模式:是比工厂方法模式更加抽象的概念,如一个生成眼镜的工厂它相对于眼镜的品牌来讲就是一个抽象工场的模式。再谈Abstract Factory模式来实现数据库操作的类