【設計模式】簡單工廠模式

定義


經過工廠類提供的方法,建立不一樣的派生類git

一般建立的類都具備共同的基類/接口github

優缺點


  • 優勢

客戶端與具體的實現類解耦ide

  • 缺點

新增產品須要修改原來工廠類的方法,不符合開閉原則code

角色


  • 客戶端 --> 靜態工廠,抽象產品
  • 抽象產品 --> 具體產品
  • 具體產品
  • 靜態工廠 --> 抽象產品,具體產品

代碼


  • 抽象產品
public abstract class Phone
{
    public abstract void Call();
}
  • 具體產品
public class IPhone : Phone
{
    public override void Call()
    {
        System.Console.WriteLine("Call by IPhone");
    }
}
public class AndroidPhone : Phone
{
    public override void Call()
    {
        System.Console.WriteLine("Call by Android");
    }
}
  • 靜態工廠
public static class PhoneFactory
{
    public static Phone Create(string name)
    {
        switch (name)
        {
            case "IPhone":
                return new IPhone();
            case "AndroidPhone":
                return new AndroidPhone();
            default:
                throw new System.NotImplementedException($"未實現【{name}】類型");
        }
    }
}
  • 客戶端
var phone = PhoneFactory.Create("IPhone");
phone.Call();

phone = PhoneFactory.Create("AndroidPhone");
phone.Call();

示例代碼 - Github接口

相關文章
相關標籤/搜索