以前老听别人说多数据库的连接应当用工厂模式处理,当时感觉神秘,没有深究,在学习了工厂模式后,老感觉不对,工厂模式(我开始认为是抽象工厂模式)不是创建产品系列的嘛,也就是创建对象的嘛,多数据库哪有需要创建产品系列,也就是对象的系列,后来想想了感觉用工厂方法还是比较合适的,今天从网上搜索,果然在这里大家所说的工厂模式指的是
工厂方法模式。在这里大概讲一下。
1. 首先定义抽象工厂,创建产品,在这里是数据库连接的实例。
在此可以例如
2.然后定义具体工厂,实现创建方法,具体工厂创建具体产品。
目前只写 oracle的
3.首先定义抽象产品,描述都需要什么方法或属性,一般就是创建连接,打开连接,执行sql,查询结果,返回dataset、或dataTable,事务的操作,关闭连接等,可以根据你的需要。目前实例如下
4.然后定义具体产品,可以有sqlserver、oracle什么的,继承抽象工厂,实现抽象工厂的方法或属性。
然后定义确定使用哪种具体产品的方法,目前写了不再例举。
5.定义决定使用哪个工厂的控制类,控制方式可以使用传字符串的方式,或者读配置文件,或者其他方式,推荐配置文件,容易修改,灵活。可以采用反射的形式,也可以不用。推荐反射,灵活获得以插件式的灵活性。在此不写代码 了。
思路如此,一切根据实际情况灵活运用,上面写的没有经过实验,都是构思过程,可能有谬误的地方,欢迎大家拍砖,呵呵。
后记:
现在感觉不用工厂方法也可以 ,反而有些麻烦,其实用简单工厂就行,就是由抽象产品和具体产品,然后有一个生产产品的方法(可以使用工厂里的create)就可以。在方法里决定具体使用哪一个产品。产品即数据库的操作定义。
工厂方法模式。在这里大概讲一下。
1. 首先定义抽象工厂,创建产品,在这里是数据库连接的实例。
在此可以例如
public abstract class DatabaseFactory
{
public AbstractDatabase Create;
}
}
{
public AbstractDatabase Create;
}
}
2.然后定义具体工厂,实现创建方法,具体工厂创建具体产品。
目前只写 oracle的
public class OracleFactory:DatabaseFactory
{
public override AbstractDatabase Create()
{
//to do
}
}
{
public override AbstractDatabase Create()
{
//to do
}
}
3.首先定义抽象产品,描述都需要什么方法或属性,一般就是创建连接,打开连接,执行sql,查询结果,返回dataset、或dataTable,事务的操作,关闭连接等,可以根据你的需要。目前实例如下
Code
4.然后定义具体产品,可以有sqlserver、oracle什么的,继承抽象工厂,实现抽象工厂的方法或属性。
然后定义确定使用哪种具体产品的方法,目前写了不再例举。
5.定义决定使用哪个工厂的控制类,控制方式可以使用传字符串的方式,或者读配置文件,或者其他方式,推荐配置文件,容易修改,灵活。可以采用反射的形式,也可以不用。推荐反射,灵活获得以插件式的灵活性。在此不写代码 了。
思路如此,一切根据实际情况灵活运用,上面写的没有经过实验,都是构思过程,可能有谬误的地方,欢迎大家拍砖,呵呵。
后记:
现在感觉不用工厂方法也可以 ,反而有些麻烦,其实用简单工厂就行,就是由抽象产品和具体产品,然后有一个生产产品的方法(可以使用工厂里的create)就可以。在方法里决定具体使用哪一个产品。产品即数据库的操作定义。