設計模式既上一篇關於單例模式後,終於要接著寫下去了,先來個最簡單的,簡單工廠模式,這個設計模式很簡單,也是最常用的(是不是好多東西都這樣,越簡單,門檻越低,越討人喜歡)。 概念(原諒我無恥的抄百度百科): 簡單工廠模式是屬於創建型模式,又叫做靜態工廠方法(Static Factory Method) ...
設計模式既上一篇關於單例模式後,終於要接著寫下去了,先來個最簡單的,簡單工廠模式,這個設計模式很簡單,也是最常用的(是不是好多東西都這樣,越簡單,門檻越低,越討人喜歡)。
概念(原諒我無恥的抄百度百科):
簡單工廠模式是屬於創建型模式,又叫做靜態工廠方法(Static Factory Method)模式,但不屬於23種GOF設計模式之一。簡單工廠模式是由一個工廠對象決定創建出哪一種產品類的實例。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的一個特殊實現。
這裡說的很清楚,一個工廠N多對象,這就是簡單工廠的實質,具體的UML類圖如下
先安利下processon這個線上的工具,https://www.processon.com/i/5778719ce4b09f625a87f51b 這是我的邀請鏈接,當然你如果需要畫很多圖,請花錢支持他們。
來解釋下這個類圖,三部分組成,一是Creator,是工廠類,二是IProduct介面,三是具體的產品A和B。
具體的代碼如下
產品介面:
public interface IProduct { void meathod(); }
具體產品:
public class ProductA implements IProduct { public void meathod() { System.out.printf("產品A"); } }
public class ProductB implements IProduct { public void meathod() { System.out.printf("產品B"); } }
工廠:
public class Creator { public static IProduct createProduct(String productName) { if (null == productName) { return null; } else if ("A".equals(productName)) { return new ProductA(); } else if ("B".equals(productName)) { return new ProductB(); } return null; } public static void main(String[] args) { IProduct productA = Creator.createProduct("A"); productA.meathod(); IProduct productB = Creator.createProduct("B"); productB.meathod(); } }
輸出: 產品A產品B
具體實例:
這樣簡單的模式是比較常用的,拿我們的項目來說,我們做的產品採用多個合作方的各種介面,其中大部分介面都是相同的只是再具體的欄位和細節不一樣而已,例如去申請授信都是一些個人隱私信息,各家要的大體相同,只是個別的信息不同而已,這樣就很適合工廠模式。
優缺點:
優點:解耦,幫助封裝。
缺點:增加客戶端複雜度,不利於擴展子工廠
其實簡單工廠模式的本質就是選擇實現。
這個簡單的就說這和麽多吧。
參考文獻:龍哥的設計模式系列 比我寫的強很多 這個是龍哥博客地址 http://www.zuoxiaolong.com/
《研磨設計模式》 這是一本用Java實現和講解的設計模式。