以下是一個工廠生產課程的例子設計模式
用到了簡單工廠設計模式,已經遵循的原則:優化
依賴倒置原則spa
迪米特法則設計
里氏代換原則對象
接口隔離原則blog
因爲工廠類集中了全部實例的建立邏輯,這就直接致使一旦這個工廠出了問題,全部的客戶端都會受到牽連。當咱們新增長一個產品的時候必須修改工廠類,相應的工廠類就須要從新編譯一遍接口
違背了OCP開閉原則產品
因爲簡單工廠模式的產品是基於一個共同的抽象類或者接口,這樣一來,產品的種類增長的時候,即有不一樣的產品接口或者抽象類的時候,工廠類就須要判斷什麼時候建立何種接口的產品,這就和建立何種種類的產品相互混淆在了一塊兒,違背了單一職責原則,致使系統喪失靈活性和可維護性編譯
優化以後以下:class
使用工廠方法設計模式
經過定義工廠父類負責定義建立對象的公共接口,而子類則負責生成具體的對象
這樣就將類的實例化(具體產品的建立)延遲到工廠類的子類(具體工廠)中完成,即由子類來決定應該實例化(建立)哪個類
之因此能夠解決簡單工廠的問題,是由於工廠方法模式把具體產品的建立推遲到工廠類的子類(具體工廠)中,此時工廠類再也不負責全部產品的建立,而只是給出具體工廠必須實現的接口,這樣工廠方法模式在添加新產品的時候就不修改工廠類邏輯而是添加新的工廠子類,符合開放封閉原則,克服了簡單工廠模式中缺點
下期預告:抽象工廠模式