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(); } }
效果: