【发布时间】:2012-04-08 01:52:33
【问题描述】:
此继承可在 ADO.Net 中找到。我们可以说这里同时使用了两种设计模式,抽象工厂和工厂方法?
Abstract Factory:“为创建相关或依赖对象系列提供一个接口,而无需指定它们的具体类。”
所以这里的 DbProviderFactory 是一个用于创建相关对象系列的接口,即 DbConnection、DbCommand,它们都与某些数据库提供程序(如 Sql 或 Oracle 提供程序)相关。
工厂方法:“定义一个用于创建对象的接口,但让子类决定实例化哪个类。工厂方法让一个类将实例化推迟到子类。”
所以这里 (DbConnection CreateConnection()) 行是工厂方法,因为它定义了创建对象的接口,但是让 SqlProviderFactory 和 OracleProviderFactory 等子类决定创建什么实例。 Sql 提供者将创建 SqlConnection,Oracle 提供者将创建 OracleConnection,这些类型从 DbConnection 继承。
我们可以说DbProviderFactory类中的每个方法都是工厂方法,整个模式是抽象工厂吗?
【问题讨论】:
标签: .net design-patterns factory-pattern