Factory Pattern 創造型設計模式,提供一個創造物件的方式,在工廠模式中,創造物件的邏輯不對外暴露創建,只提供一個創建的介面,
定義一個創建物件的介面,其子類決定去創建哪一個實體物件,創建程序在之類中進行,

工廠模式
優點:呼叫者使用甚至需要知道創建物件的名字就可以,擴展性強,如果想增加,只需要增加一個工廠類就可以了,屏蔽產品的具體實作,只提供介面,
缺點:每增加一個工廠類,都需要增加一個工廠類和物件實作工廠,使系統類成倍增加,在一定程度上增加了系統的復雜度,也增加了系統具體類的依賴,
使用場景:復雜物件使用工廠模式,而簡單物件則直接new 物件,如果簡單物件使用工廠模式,就需要引入一個工廠類,增加系統復雜度
實體應用:1、超市打折活動,可能會有滿減、8折、9折等等活動,這個時候就可以使用工廠模式,
2、創建不同品牌的手機,每臺手機都有打電話,發資訊等功能
代碼:
1、先創建一個手機的介面:
public interface Phone
{
string GetPhoneMessage();
}
2、創建繼承手機介面-華為手機、小米手機等
public class Huawei : Phone
{
public string GetPhoneMessage()
{
return "Vender Name:Huawei";
}
}
public class MI : Phone
{
public string GetPhoneMessage()
{
return "Vender Name:Xiao Mi";
}
}
3、創建工廠類:根據條件創建對應的物件,條件可以自己設定
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
}
4、呼叫
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();
}
}
效果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/6003.html
標籤:設計模式
