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