DbProviderFactory ADO.Net中的抽象工厂和工厂模式?
该继承存在于ADO.Net中。我们可以说在这里两个设计模式都在使用,抽象工厂和工厂方法?
抽象工厂:“提供一个接口来创建相关或依赖对象的族,而不指定它们的具体类。”
因此,这里DbProviderFactory是一个用于创建相关对象系列的接口,即DbConnection,DbCommand,它们都与某些数据库提供者(如Sql或Oracle提供者)相关。工厂方法:“定义一个创建对象的接口,但让子类决定实例化哪个类。Factory方法让类将实例化推迟到子类。”因此,这里的行(DbConnection CreateConnection())是工厂方法,因为它定义了创建对象的接口,但让子类(如SqlProviderFactory和OracleProviderFactory)决定创建哪个实例。 Sql提供者将创建SqlConnection,并且Oracle提供者将创建OracleConnection,并且这些类型从DbConnection继承。
我们可以说DbProviderFactory类中的每个方法都是一个工厂方法,而整个模式是抽象工厂吗?
谢谢lazyberezovsky ... – CleanBold 2012-03-24 09:27:37
我欢迎您,我建议您查看书'头第一个设计模式' - 有非常好的描述工厂,工厂方法和抽象工厂。顺便说一句,有时抽象工厂可以通过代理而不是工厂方法来实现(但数据库对象应该创建,无论如何,复制不会到这里) – 2012-03-24 09:35:55