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