Factory Pattern 創造型設計模式,提供一個創造對象的方式,在工廠模式中,創造對象的邏輯不對外暴露建立,只提供一個建立的接口。設計模式
定義一個建立對象的接口,其子類決定去建立哪個實例對象,建立過程在之類中進行。設計
工廠模式code
優勢:調用者使用甚至須要知道建立對象的名字就能夠,擴展性強,若是想增長,只須要增長一個工廠類就能夠了,屏蔽產品的具體實現,只提供接口。
缺點:每增長一個工廠類,都須要增長一個工廠類和對象實現工廠,使系統類成倍增長,在必定程度上增長了系統的複雜度,也增長了系統具體類的依賴。對象
使用場景:複雜對象使用工廠模式,而簡單對象則直接new 對象,若是簡單對象使用工廠模式,就須要引入一個工廠類,增長系統複雜度blog
實例應用:一、超市打折活動,可能會有滿減、8折、9折等等活動,這個時候就能夠使用工廠模式。
二、建立不一樣品牌的手機,每臺手機都有打電話,發信息等功能繼承
代碼:
一、先建立一個手機的接口:接口
public interface Phone { string GetPhoneMessage(); }
二、建立繼承手機接口-華爲手機、小米手機等string
public class Huawei : Phone { public string GetPhoneMessage() { return "Vender Name:Huawei"; } }
public class MI : Phone { public string GetPhoneMessage() { return "Vender Name:Xiao Mi"; } }
三、建立工廠類:根據條件建立對應的對象,條件能夠本身設定產品
public class PhoneFactory { public static Phone GetPhone(Enum type) { Phone phone = null; switch (type) { case Vender.Huawei: phone = new Huawei(); break; case Vender.Mi: phone = new MI(); break; default: break; } return phone; } } public enum Vender { Mi = 1, Huawei = 2 }
四、調用it
class Program { static void Main(string[] args) { Console.WriteLine("======工廠模式======"); Phone phone = PhoneFactory.GetPhone(Vender.Huawei); Console.WriteLine(phone.GetPhoneMessage()); phone = PhoneFactory.GetPhone(Vender.Mi); Console.WriteLine(phone.GetPhoneMessage()); Console.ReadLine(); } }
效果: