工厂(工厂方法)模式实现多数据库的连接
2009-08-24 19:48
507 查看
以前老听别人说多数据库的连接应当用工厂模式处理,当时感觉神秘,没有深究,在学习了工厂模式后,老感觉不对,工厂模式(我开始认为是抽象工厂模式)不是创建产品系列的嘛,也就是创建对象的嘛,多数据库哪有需要创建产品系列,也就是对象的系列,后来想想了感觉用工厂方法还是比较合适的,今天从网上搜索,果然在这里大家所说的工厂模式指的是
工厂方法模式。在这里大概讲一下。
1. 首先定义抽象工厂,创建产品,在这里是数据库连接的实例。
在此可以例如
4.然后定义具体产品,可以有sqlserver、oracle什么的,继承抽象工厂,实现抽象工厂的方法或属性。
然后定义确定使用哪种具体产品的方法,目前写了不再例举。
5.定义决定使用哪个工厂的控制类,控制方式可以使用传字符串的方式,或者读配置文件,或者其他方式,推荐配置文件,容易修改,灵活。可以采用反射的形式,也可以不用。推荐反射,灵活获得以插件式的灵活性。在此不写代码 了。
思路如此,一切根据实际情况灵活运用,上面写的没有经过实验,都是构思过程,可能有谬误的地方,欢迎大家拍砖,呵呵。
后记:
现在感觉不用工厂方法也可以 ,反而有些麻烦,其实用简单工厂就行,就是由抽象产品和具体产品,然后有一个生产产品的方法(可以使用工厂里的create)就可以。在方法里决定具体使用哪一个产品。产品即数据库的操作定义。
工厂方法模式。在这里大概讲一下。
1. 首先定义抽象工厂,创建产品,在这里是数据库连接的实例。
在此可以例如
{ public abstract string DbType { get; } public abstract DbDataReader ExecuteDbDataReader(string sql); public abstract DbConnection Connection { get; } public abstract int ExecuteNonQuery(stirng sql, string[] strParams, object[] strValues, bool isProcedure); public abstract DataSet GetDataSet(string sql,string[] strParams, object[] strValues,bool isProcedure); public abstract DataTable GetDataTable(string sql, bool isProcedure); }
4.然后定义具体产品,可以有sqlserver、oracle什么的,继承抽象工厂,实现抽象工厂的方法或属性。
然后定义确定使用哪种具体产品的方法,目前写了不再例举。
5.定义决定使用哪个工厂的控制类,控制方式可以使用传字符串的方式,或者读配置文件,或者其他方式,推荐配置文件,容易修改,灵活。可以采用反射的形式,也可以不用。推荐反射,灵活获得以插件式的灵活性。在此不写代码 了。
思路如此,一切根据实际情况灵活运用,上面写的没有经过实验,都是构思过程,可能有谬误的地方,欢迎大家拍砖,呵呵。
后记:
现在感觉不用工厂方法也可以 ,反而有些麻烦,其实用简单工厂就行,就是由抽象产品和具体产品,然后有一个生产产品的方法(可以使用工厂里的create)就可以。在方法里决定具体使用哪一个产品。产品即数据库的操作定义。
相关文章推荐
- 单例模式的数据库连接和PHP实现页面静态化的第一种方法
- 用工厂模式写了一个数据库访问类库,但是对于数据库连接字符串和数据库类型有两种方法,不知道哪种好,大家看看了,附类关系图
- Python数据库的连接实现方法与注意事项
- 设计模式:浅析 抽象工厂、工厂方法、简单(静态)工厂 java实现
- ZendFramework框架实现连接两个或多个数据库的方法
- 设计模式之—简单工厂方法(StaticFactory )-Java实现
- java 工厂+策略+模板方法模式实现单接口多种类型文件解析
- 设计模式的应用-工厂方法实现3层模型解耦
- 简单的数据库连接工厂实现
- C++模板实现的通用工厂方法模式
- JDBC之静态工厂方法实现可重用连接
- C#实现连接SQL Server2012数据库并执行SQL语句的方法
- ThinkPHP实现多数据库连接的解决方法
- 设计模式实践-反射到所有接口实现类实践工厂方法,页面中有大量计算数据时设计实践
- 设计模式:浅析 抽象工厂、工厂方法、简单(静态)工厂 java实现
- Oracle 数据库的连接方式实现方法
- 简单工厂模式构建数据访问层以实现多种数据库之间的切换
- python中getattr函数使用方法 getattr实现工厂模式
- centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课
- python实现的工厂方法--设计模式初级