工廠方法(Factory Method)
目的
定義一個用於建立物件的介面,但讓子類決定要例項化哪個類。Factory Method允許類將例項化推遲到子類。
說明
鐵匠製造武器。精靈需要精靈武器,獸人需要獸人武器。根據顧客,召喚正確型別的鐵匠。
簡而言之,它提供了一種將例項化邏輯委託給子類的方法。
維基百科說
在基於類的程式設計中,工廠方法模式是一種建立型模式,它使用工廠方法來處理建立物件的問題,而無需指定將要建立的物件的確切類。在介面中指定並由子類實現,或者在基類中實現並可選地由派生類覆蓋 ,這是通過呼叫工廠方法建立物件來完成的, 而不是通過呼叫建構函式。
程式化示例
以上面的鐵匠為例。首先,我們有一個鐵匠介面和它的一些實現
public interface Blacksmith { Weapon manufactureWeapon(WeaponType weaponType); } public class ElfBlacksmith implements Blacksmith { public Weapon manufactureWeapon(WeaponType weaponType) { return new ElfWeapon(weaponType); } } public class OrcBlacksmith implements Blacksmith { public Weapon manufactureWeapon(WeaponType weaponType) { return new OrcWeapon(weaponType); } } |
現在,隨著顧客的到來,召喚正確型別的鐵匠並製造所需的武器
Blacksmith blacksmith = new ElfBlacksmith(); blacksmith.manufactureWeapon(WeaponType.SPEAR); blacksmith.manufactureWeapon(WeaponType.AXE); // Elvish weapons are created |
適用場景
- 類無法預測它必須建立的物件的類
- 類希望它的子類指定它建立的物件
- 類將責任委託給幾個幫助子類之一,並且該幫助子類的具體內容就是被委託的職責。
相關文章
- 設計模式--工廠方法模式(Factory Method Pattern)設計模式
- 使用C# (.NET Core) 實現簡單工廠(Simple Factory) 和工廠方法設計模式 (Factory Method Pattern)C#設計模式
- Laravel 中使用模型工廠 (Factory)Laravel模型
- 簡單工廠模式( Simple Factory Pattern )模式
- Abstract Factory(抽象工廠)——物件建立型模式抽象物件模式
- 《設計模式》 - 2. 工廠模式( Factory )設計模式
- 設計模式-抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 設計模式--抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- Knoll Light Factory Mac(Ae/Pr燈光工廠濾鏡)Mac
- 設計模式系列之工廠模式三兄弟(Factory Pattern)設計模式
- 簡單工廠模式(simple factory)及程式碼實現模式
- 設計模式實戰 - 抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 設計模式實戰 – 抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 建立型:工廠模式-工廠方法、抽象工廠模式抽象
- 靜態工廠方法和例項工廠方法
- 【圖解設計模式系列】The Abstract Factory Pattern: 抽象工廠模式圖解設計模式抽象
- PHP設計模式(一)簡單工廠模式 (Simple Factory For PHP)PHP設計模式
- 工廠方法模式模式
- 一篇搞定工廠模式【簡單工廠、工廠方法模式、抽象工廠模式】模式抽象
- 設計模式-簡單工廠、工廠方法模式、抽象工廠模式設計模式抽象
- 設計模式-工廠模式二(工廠方法模式)設計模式
- 工廠方法模式(FactoryMethod)模式
- 無廢話設計模式(1)--簡單工廠、工廠方法、抽象工廠設計模式抽象
- 設計模式之工廠模式!深入解析簡單工廠模式,工廠方法模式和抽象工廠模式設計模式抽象
- 簡單工廠模式、工廠方法模式和抽象工廠模式有何區別?模式抽象
- 工廠方法--設計模式設計模式
- 建立型模式:工廠方法模式
- Java 設計模式之工廠方法模式與抽象工廠模式Java設計模式抽象
- 【設計模式】工廠方法模式設計模式
- 設計模式-工廠方法模式設計模式
- 設計模式~~~工廠方法模式設計模式
- 設計模式 - 工廠方法模式設計模式
- Java基礎-工廠方法模式Java模式
- 設計模式學習(二)工廠模式——工廠方法模式+登錄檔設計模式
- 全面通透深入剖析工廠方法模式模式
- Typescript 設計模式之工廠方法TypeScript設計模式
- 設計模式-建立型-工廠方法設計模式
- java設計模式-工廠方法模式Java設計模式