【类图】:ide
【Code】this
internal class SimpleFactory { internal static Computer CreateComputer(string typeName) { switch (typeName) { case "MacPro": { return new MacPro(); } case "LenovoY400": { return new LenovoY400(); } default: { Console.WriteLine("not found this type:" + typeName); return null; } } } }
【描述】spa
这里只看下SimpleFactory的代码,工厂中的CreateComputer方法根据传入的typeName,生成不一样的对象。若是咱们这时候又有了新的Computer类型ChromeBook,这时候咱们须要添加一个新的类ChromeBook并修改工厂方法,加一个分支。但这违反了OCP(Open Close Principle)3d
【优缺点】code
优势:简单工厂模式实现了职责的分离,客户端再也不须要主动去建立产品对象,而是将这个职责交给了工厂去执行。对象
缺点:
一、简单工厂模式将全部产品对象的建立逻辑都集中在一个工厂方法中,当逻辑过于繁杂时,一旦不能正常工做时,整个系统都会受到影响。
二、不利于扩展,添加新产品将违反OCP。blog