工廠模式
工廠模式是創建型模式模式,解決new對象時的一些列問題,如:依賴,耦合,后期維護等
1. 簡單工廠模式
如:有一個披薩店類,制作披薩流程如下的,,,代碼里直接new出了披薩,然后做些操作,如下:


我們把new這段代碼封裝起來,移動到單獨的一個類里(SimplePizzaFactory),我們新增的類就是工廠,如下;


最終的代碼如下;


總結:
新增的SimplePizzaFactory就是簡單工廠模式(一般沒有子類,沒有再繼承關系),我們看看定義,如下:


2. 工廠方法模式
定義:定義一個用于創建對象的接口,讓子類決定實例化哪一個類,工廠方法使一個類的實例化延遲到其子類。
問題:披薩店的列子中,如果有兩個分店,一個在美國,一個在英語,,那他們需要生產本地化的披薩,這時要引入工廠方法模式了,類圖如下:


說明:pizzaStore超類(工廠類),有兩個子類,分別兩個子類來決定到底實例化那些產品。
3. 抽象工廠模式
定義:抽象工廠模式提供一個接口,用于創建相關或依賴對象的家族,而不需要明確指定具體類。可以理解成是多個工廠方法的組合。
解決問題:在工廠方法模式中,我們的具體創建者每次使用都只能創建一個同類型的對象,假如我們現在需要的是多個不同類型的對象,工廠方法就滿足不了需求了。這時我們可以把多個工廠方法組合到一個類,這就是抽象工廠模式,它就是專門用來創建多個產品,也可以說是創建產品家族的。類圖如下:


需求:為了保證質量,我們需要把原料統一共同時,就適合抽象工廠來解決。類圖如下:


抽象工廠模式的優點
?。?)、允許客戶使用抽象的接口創建一組相關產品,而不需要知道(或者關心)產出的具體產品是什么,這樣客戶就可以從具體的產品中解耦出來。
?。?)、一個具體工廠可以創建多個產品,與工廠方法模式相比,可以少產生具體工廠的類數量。
?。?)、易于交換產品系列,只要更換具體工廠,就可以改變這個產品系列。
抽象工廠模式的和缺點
?。?)、抽象工廠是使用組合的方式把工廠方法集合到一個類中,當新增一個產品家族成員時就要修改抽象工廠類及其下面的具體工廠類,所以它的擴展性比較差。
?。?)、每新增一個產品子類都要創建一個類,當產品子類過多時會產生很多類,導致系統復雜性加大。
抽象工廠模式的使用場合
1、當需要創建產品家族,或者需要想讓創建的產品集合起來時使用。
2、當系列產品不固定,在以后可能會增加整個系列產品時使用。
設計原則:
1. 對擴展開放,對修改關閉。
2. 依賴抽象,不要依賴具體類。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。