ADO.NET 中的抽象工厂
用Interface或抽象类来生成一组相关的对象.
以ADO.Net2.0为例
见(Abstract Factory Design Pattern in ADO.NET 2.0 by Muhammad Mosa)
ado.net 定义了一组抽象的class: DbConnection, DbCommand, DbParameter等,
每个抽象class都有几个对应的实现: SqlConnection, OralceConnection.
ado.net 2.0中的DbProviderFactory class充当了abstract factory的角色,
DbProviderFactory中定义了一系列careateXXX函数来生成connection, command等class.
从它派生的SqlClientFactory, OracleClientFactory 等重载了这些createXXX方法,
可以生成具体的connection, command.
优点在于
1. 隔离具体的class
2. 可以任意替换一系列的class
3. 强制使用统一系列的class
缺点:
AbstractFactory interface 定义了需要产生的class的规格,如果需要增加一个新的系列,
需要从头到尾搞一套Factory class.
如果AbstractFactory 定义一个CreateProduct()方法,使用.net的reflection来生成对象,就
可以省略Concrate Factory的定义.
