2012-03-23 131 views
0

DbProviderFactory inheritanceDbProviderFactory ADO.Net中的抽象工廠和工廠模式?

該繼承存在於ADO.Net中。我們可以說在這裏兩個設計模式都在使用,抽象工廠和工廠方法?

抽象工廠:「提供一個接口來創建相關或依賴對象的族,而不指定它們的具體類。」

因此,這裏DbProviderFactory是一個用於創建相關對象系列的接口,即DbConnection,DbCommand,它們都與某些數據庫提供者(如Sql或Oracle提供者)相關。工廠方法:「定義一個創建對象的接口,但讓子類決定實例化哪個類。Factory方法讓類將實例化推遲到子類。」因此,這裏的行(DbConnection CreateConnection())是工廠方法,因爲它定義了創建對象的接口,但讓子類(如SqlProviderFactory和OracleProviderFactory)決定創建哪個實例。 Sql提供者將創建SqlConnection,並且Oracle提供者將創建OracleConnection,並且這些類型從DbConnection繼承。

我們可以說DbProviderFactory類中的每個方法都是一個工廠方法,而整個模式是抽象工廠嗎?

回答

0

是的,DbProviderFactory是抽象工廠模式的一個很好的例子。並且該工廠的每個CreateXXX方法都是FactoryMethod。

+0

謝謝lazyberezovsky ... – CleanBold 2012-03-24 09:27:37

+0

我歡迎您,我建議您查看書'頭第一個設計模式' - 有非常好的描述工廠,工廠方法和抽象工廠。順便說一句,有時抽象工廠可以通過代理而不是工廠方法來實現(但數據庫對象應該創建,無論如何,複製不會到這裏) – 2012-03-24 09:35:55

0

是的,Factory和Abstract Factory之間的唯一區別是抽象,因此保留了Factory的名稱。因此,抽象工廠本質上是一組一個或多個工廠。

+0

謝謝賈斯汀... – CleanBold 2012-03-24 09:28:01