簡單工廠模式
就是,對對象實例化的過程和需要實例化的對象進行細節(jié)上的封裝。
優(yōu)點:工廠類中包含了必要的邏輯判斷,根據(jù)客戶端的選擇條件動態(tài)實例化相關(guān)類。對于客戶端來說,去除了與具體產(chǎn)品的依賴。
缺點:當(dāng)需要增加產(chǎn)生一個新對象實例的方法時,需要修改工廠類,這樣,工廠類就違背了“開-閉原則”。
工廠方法模式
定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到了子類。
工廠方法模式實現(xiàn),客戶端進行工廠的實例化,產(chǎn)生哪一個工廠實例的邏輯判斷依然存在。工廠方法把簡單工廠內(nèi)部邏輯判斷轉(zhuǎn)移到了客戶
端。工廠方法模式就是利用了“依賴倒轉(zhuǎn)原則”解決了簡單工廠模式違背“開-閉原則”的問題。
抽象工廠模式
提供一個創(chuàng)建一系列相關(guān)或者相或依賴對象的接口,而不需要指定它們具體的類。
通常在運行時刻產(chǎn)生一個ConcreteFactory實例,這個具體工廠再創(chuàng)建具有特定實現(xiàn)的產(chǎn)品實例。為創(chuàng)建不同的產(chǎn)品對象,客戶端應(yīng)使用不同的具體工廠。
優(yōu)點:易于改變產(chǎn)品系列;具體的創(chuàng)建過程與客戶端分離,客戶端操作抽象接口產(chǎn)生實例。
缺點:增加一種產(chǎn)品(對象),需要改變的地方很多。
用簡單工廠來改進抽象工廠
用反射+抽象工廠進行改進
所有用簡單工廠的地方,都可以考慮用反射來解除if,case判斷語句帶來的耦合。