经过工厂类提供的方法,建立不一样的派生类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();