設計模式一:簡單工廠模式
說到簡單工廠模式,說明此模式是用來生產的,也就是用來建立例項,我們平常的例項化就是new乙個物件,可如果要生產多個不同的物件應該怎麼辦?我們對例項化物件進行管理,也就是說想要乙個例項,不需要在乎這個例項是如何產生的,傳入乙個型別/特定字串/特定int 等,就能收到乙個標識該型別的物件。
以女媧造人來舉例,有黃種人,黑種人,白種人三個型別,這三種都是人,那我們先寫乙個人類介面ihuman 也可以使用基類,表現效果一樣,三類人都 有speak getcolor 的方法
using system.collections;
using system.collections.generic;
using unityengine;
namespace 簡單工廠
public class yellowman : ihuman
public void speak()
}public class whiteman : ihuman
public void speak()
}public class blackman : ihuman
public void speak()}}
三種人的類已經建立好了,要開始進行工廠生產了,建立乙個工廠類factory,傳入約定好的字串/int/ 型別,即可以開始生產了,這裡用乙個靜態的生產方法來進行生產,所以簡單工廠模式又被稱為靜態生產模式。什麼?不想用靜態,還可以進行再次封裝下這個工廠,把工廠抽象出來?那就是工廠模式和抽象工廠模式了,下章再說。。。
namespace 簡單工廠
return null;}}
}
現在我們要做個測試了,要去生產加工人類了,只需要傳入想生產的型別,即可返回你所需要的的例項
using system.collections;
using system.collections.generic;
using unityengine;
namespace 簡單工廠}}
將test.cs 指令碼扔到場景中,執行看看吧
總結: 簡單工廠模式就是簡單。讓上層**不需要處理生產流程,也就是說,使用者只要結果,不要過程,過程由工廠進行初始化。
優點(1)簡單工廠包含必要的判斷邏輯,簡單工廠實現了物件的建立和使用的分離。
(2)客戶端無需知道所建立的具體產品類的類名,只需要具體產品類對應的引數即可!
(3)在不修改任何客戶端**的情況下更換和增加新的具體產品類,在一定程度上提高了系統的靈活性
缺點(1)工廠類的職責過重,從類圖中可以看出簡單工廠中包含加減乘除的邏輯判斷語句,它一旦有問題,整個系統都要出問題
(2)在新增新的類的時候,例如我新增了棕色人,那麼系統中的簡單工廠類就要修改,違反了開放——封閉原則!這樣及其不利於系統的擴充套件和維護!
(3)簡單工廠的靜態方法,使得工廠角色無法形成基於繼承的等級結構!
工廠設計模式一 簡單工廠模式
工廠設計模式實現了建立者和呼叫者的分離。類別 1.簡單工廠模式 2.工廠方法模式 3.抽象工廠模式 遵循的設計原則 1.ocp 開閉原則,open closed principle 乙個軟體的實體應當那個對擴充套件開放,對修改關閉 2.dip 依賴倒置原則,dependence inversion ...
工廠設計模式(一) 簡單工廠模式
工廠設計模式可分為 簡單工廠模式 工廠方法模式 抽象工廠模式 第一篇我們來聊聊 理解 假設某些例項具有相同的方法,可以根據引數的不同返回不同的例項,被建立的例項通常都具有共同的父類,那麼可以考慮使用簡單設計模式來實現。例如可以實用簡單工廠模式設計乙個可以建立不同幾何形狀 如圓形 方形和三角形等 的繪...
設計模式 一 工廠模式 簡單工廠
以前總覺得設計模式純屬扯淡,浪費精力,10 能搞定的事情非要寫那麼多的介面或者實現類.為什麼要用設計模式,開發有乙個重要的原則 對修改關閉,對擴充套件開放.因為如果把 全部都雜糅到乙個類中,第一 復用性太差,擴充套件性不強.第二,修改起來一改巨改,改動即意味著要增加測試人員工作量,且引入修改bug如...