假设有一个应用,需要对数据库进行操作。虽然操作的表是一样的,但是,不同的用户连接的库可能不同,还可能不同的数据库存在于不同的数据库系统上。如何来实现呢?综合抽象工厂、工厂方法的使用,我们得到以下解决方法。
|
这样,用户无须知道它连接的具体数据库系统以及数据库名,就可以执行他需要的操作(使用抽象工厂接口),完成他自身的任务。具体使用何数据库系统上的哪个库,在用户登录后,由管理者指定(使用工厂方法工具类)。
|
这样,用户无须知道它连接的具体数据库系统以及数据库名,就可以执行他需要的操作(使用抽象工厂接口),完成他自身的任务。具体使用何数据库系统上的哪个库,在用户登录后,由管理者指定(使用工厂方法工具类)。
感觉上面的代码只能称做工厂方法模式,根本没有抽象工厂模式。
呵呵,看到bridge模式,我就想起来斑主给咱们的加奶的咖啡,收益非浅呀。
客户端是怎么调用的,谢谢!
感觉就是用的工厂方法,由“数据库类型”和“数据库名”生成操作对象。如果再掩藏“数据库类型”,建立工厂这边的类结构(例如建立一个共同的数据库的基类,按数据库类型建立不同的工厂),那就是抽象工厂了。不过我觉得也没有必要,楼主的实现已经不错了,支持!
public static Operations getOperations(int dbms, String dbName)
{
}
是一个简单工厂,不是工厂方法
更正一下:
> 就可以执行他需要的操作(使用抽象工厂接口),完成他自身的任务
这里好像应该是
就可以执行他需要的操作(使用抽象产品接口),完成他自身的任务
大家认为呢?