【類圖】: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