軟體設計模式之簡單工廠模式
阿新 • • 發佈:2020-10-20
簡單工廠模式的概念:
簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法(Static Factory Method)模式,但不屬於23種GOF設計模式之一。簡單工廠模式是由一個工廠物件決定創建出哪一種產品類的例項。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的一個特殊實現。
簡單工廠模式優缺點:
簡單工廠的優點我百度了很多,眾說紛紜;就連簡單工廠的實現都有很多不同的;
如:
1、計算器做例子,工廠裡面根據傳入的引數來進行加減乘除的,但是我直接一個類裡寫加減乘除打上文件註釋,不是更方便?我類打個點不就出來了?描述還可以要多詳細可以多詳細;
2、是一個介面,有很多實現類,然後工廠類統一對實現類管理,這個我覺得作用就是解耦;原本是客戶端<-->實現類,變成了客戶端<-->工廠類<-->實現類;這個我還是有點點懵;
3、是說賣滑鼠的,全域性配置去控制,第一天賣滑鼠a,然後第二天滑鼠a賣完了,要賣滑鼠b,就不需要改程式碼,只需要改配置,所有的使用到的類就全改成了滑鼠b了;這個例子的好處我能理解,就是可以全域性把控,讓所有用到我工廠類的人跟著我工廠類走;
實現:
第一個例子不做實現了,沒大理解,第二個例子有點懵懵的,但似懂非懂;就實現下二,三;
第二個例子實現:
首先介面:
public interface Mouse { string GetMouseName(); }
然後實現類:
public class MouseDEY:Mouse {public string GetMouseName() { return "達爾優"; } } public class MouseSFY:Mouse { public string GetMouseName() { return "雙飛燕"; } }
然後弄個列舉(我在這的想法是想讓它類似於路由的作用,以後實現類多了只需要看這個列舉就知道自己需要哪個;不知道是不是多此一舉,反正我覺得傳引數傳列舉也好看點,以後看到不足了再改了):
public enum MouseType { 達爾優, 雙飛燕 }
然後是簡單工廠類:
public class MouseFactory { private static Mouse mouse = null; public static Mouse createMouse(MouseType type) { switch (type) { case MouseType.雙飛燕: mouse = new MouseSFY(); break; case MouseType.達爾優: mouse = new MouseDEY(); break; } return mouse; } }
第三個例子實現:
第三個例子跟第二個其實差別不大,唯一的區別就是一個引數時呼叫工廠方法時傳進來的;一個引數時寫在全域性配置裡的;
簡單工廠類:
public class MouseFactory { private static Mouse mouse = null; private static string type =System.Configuration.ConfigurationManager.AppSettings["Fication"].ToString(); public static Mouse createMouse() { switch (type) { case "雙飛燕": mouse = new MouseSFY(); break; case "達爾優": mouse = new MouseDEY(); break; } return mouse; } }
全域性配置:
<appSettings> <add key="Fication" value="達爾優"/> </appSettings>
希望看到的大佬能指點下,感激不盡;