Factory Method(工廠方法)–對象建立型模式
一、意圖
定義一個用于建立對象的接口,讓子類決定執行個體化哪一個類。Factory Method使一個類的執行個體化延遲到其子類。
二、動機
1.在軟體系統中,經常面臨着建立對象的工作;由于需求的變化, 需要建立的對象的具體類型經常變化。
2.如何應對這種變化?如何繞過正常的對象建立方法(new),提供一 種“封裝機制”來避免客戶程式和這種“具體對象建立工作”的緊 耦合?
三、适用性
1.當一個類不知道它所必須建立對象的類型的時候。
2.當一個類希望由子類來指定它所建立的對象的時候。
3.當類建立對象的職責委托給多個幫助子類的中的某一個,并且你希望将哪一個幫助子類是代理着這一資訊局部變化的時候。
四、結構
五、效果
1.為子類提供挂鈎(hook)。
2.連接配接平行的類層次。
六、實作
1.Creator類是一個抽象并且不提供它所聲明的方法的實作;Creator類是一個具體的類而且為工廠方法提供預設的實作。
2.參數化工廠方法。
3.特定語言的變化和問題。
4.使用模闆已避免建立子類。
5.命名約定。
七、要點總結
1.Factory Method模式用于隔離類對象的使用者和具體類型之間的 耦合關系。面對一個經常變化的具體類型,緊耦合關系(new)會導 緻軟體的脆弱。
2.Factory Method模式通過面向對象的手法,将所要建立的具體對象工作延遲到子類,進而實作一種擴充(而非更改)的政策,較好地解決了這種緊耦合關系。
3.Factory Method模式解決“單個對象”的需求變化。缺點在于要求建立方法/參數相同。
八、舉例說明:
想造一個椅子,具體怎麼造等客戶來了才決定。主要思想将實作延遲到子類實作。
本文為李建忠設計模式視訊的筆記以及《設計模式-可複用面向對象的軟體的基礎》和自己的部分見解