Factory Method Pattern
工廠模式是一種創建型設計模式,在父類提供一個創建對象的方法,允許子類決定實例化對象的類型
工廠模式結構

工廠模式的應用場景
- 在寫程式時,如果無法預知對象確切類別以及他的依賴關係時
工廠方法會將創建產品的程式碼和實際使用產品的程式碼分離,能在不影響其他程式碼的情況下擴展產品創建 部分程式碼
- 如果希望用戶能夠擴展你的 library 或 framework 的內部組件
將框架中構造組件的程式碼集中到一個工廠方法中,並在繼承組件之外允許任何人對該方法進行重寫
- 如果希望復用現有對象來節省系統資源,而不是每次都重新創建對象
- 首先,需要創建儲存空間來存放所有已創建的對象
- 當其他人請求一個對象時,程式在對象池中搜尋可以用的對象
- 然後將他返回給客戶端程式
- 如果沒有可用的對象,程式則創建一個新對象(將他添加到對向池中)
因此,需要有一個既能夠創建新對象,又可以復用現有對象的方法,和工廠方法非常相像
優缺點
⭕優點
- 可以避免創建者和具體產品之間的緊密耦合
- 單一職責原則。可以將產品創建程式碼放在程式的單一個位置,使得程式碼更容易維護
- 開放封閉原則。無須更改現有客戶程式碼,就可以在程式中引入新的產品類型
❌缺點
- 工廠模式需要引入許多新的子類,可能讓程式碼變得複雜。最好的情況是將該模式引入創建者類的現有層次結構中(產品類太多時,為每個產品創建子類並無太大必要,可以在子類中復用基類中的控制參數)