對象創建型模式--Factory Method(工廠方法)

結構

參與者

  • Product:定義工廠方法所創建的接口
  • ConcreteProduct:實現Product接口
  • Creator:

聲明工廠方法,該方法返回一個Product類型的對象。Creator也可以定義一個工廠方法的缺省實現,它返回一個缺省的ConcreteProduct對象

可以調用工廠方法以創建一個Product對象。

  • ConcreteCreator:重定義工廠方法以返回一個ConcreteProduct實例

協作

Creator依賴於它的子類來定義工廠方法,所以它返回一個適當的ConcreteProduct實例

意圖

定義一個用於創建對象的接口,讓子類決定實例化哪一個類。Factory Method使一個類的實例化延遲到其子類。

別名

虛構造器(Virtual Constructor)

動機

可擴展的製作作坊,現在是生長奶油,以後可能生產牛奶

適用性

  • 當一個類不知道它所必須創建的對象的類的時候
  • 當一個類希望它的子類來制定它所創建的對象的時候
  • 當類將創建對象的指責委託給多個幫助子類中的某一個,並且你希望將哪一個幫助子類是代理者這一信息局部化的時候

相關模式

  • Abstract Factory經常用工廠方法來實現。
  • 工廠方法通常在Template Methods(模板)中被調用
  • Prototypes不需要創建Creator的子類,但是,他們通常要求一個針對Product類的Initialize操作。Creator使用Initialize來初始化對象。而Factory Method不需要這樣的操作。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章