工廠模式分爲三種:簡單工廠、工廠模式和抽象工廠模式。三者之間存在哪些異同呢?先分別看看各個模式的特點
一、 簡單工廠模式:
實現了算法和界面的分離,也就是將業務邏輯和界面邏輯分開了,降低了耦合度。
算法的封裝: 定義一個抽象的算法接口,提供不同算法的公共接口方法。其他具體算法繼承這個抽象類,並實現具體的算法。
簡單工廠類: 作爲一個獨立的類,實現了針對不同的算法進行實例化。
簡單工廠的UML圖:
二、 工廠模式:
定義一個用於創建對象的接口,讓子類決定實例化哪一個類。 遵循了開放—封閉原則。
工廠模式的UML圖:
簡單工廠與工廠模式的共同優點:
都集中封裝了對象的創建,使得要更換對象時不需要做大的改動就可實現,降低了客戶端程序與產品對象的耦合。
工廠模式PK簡單工廠模式:
1、工廠模式的優點:
工廠模式是簡單工廠模式的進一步抽象和推廣。它遵循了“開放—封閉”原則。
2、簡單工廠模式的優點:
簡單工廠模式最大的優點在於工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態實例化相關的類,對於客戶端來說,去除了與具體產品的依賴。
3、工廠模式的缺點:
工廠方法把簡單工廠的內部邏輯判斷轉移到了客戶端代碼來執行;每增加一產品就要增加一個產品工廠的類,增加了額外的開發量。
4、簡單工廠的缺點:
是沒有遵守開放—封閉原則。所謂的“開放-封閉”原則就是開放接口,封閉修改。如果將來需要添加一個開方的算法,那麼,在簡單工廠模式中,就必須在簡單工廠類中添加相應的判斷語句!另外,在簡單工廠類中利用了Switch語句,這對程序的擴展本身就不不利。
三、 抽象工廠模式:
提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類。
UML結構圖:
工廠模式和抽象工廠的區別:
只有一個User類和User操作類的時候,只需要工廠方法模式; 但數據庫中有很多的表,而Sql和access又是兩大不同的分類,所以就延伸到了抽象工廠模式
抽象工廠模式的優點:
1、易於交換產品系列,由於具體工廠類,在一個應用程序中只需要在初始化的時候出現一次, 這就使得改變一個應用的具體工廠變得非常容易,它只需改變具體工廠即可使用不同的產品配置。
2、它讓具體的創建實例過程與客戶端分離,客戶端是通過他們的抽象接口操縱實例,產品的具體類名也被具體工廠的實現分離,不會出現在客戶端代碼中。
抽象模式的缺點:
1、抽象模式雖然便於兩數據庫之間的切換,但是不便於增加需求功能。
2、如果有100個調用數據庫訪問的類,就需要多次實例化100此具體工廠類。
抽象工廠模式、反射以及配置文件:
反射方法的實質是在對象實例化的時候傳引用,將程序由編譯時轉爲運行時,通過字符串變量來處理,去除了、switch判斷的麻煩。但是如果數據庫在更換時,還需要去修改程序(字符串的值)重編譯。
通過添加配置文件可以解決更改DataAccess的問題。
原文地址:http://lvxingzhelimin.blog.163.com/blog/static/170716550201110852956542/