工廠方法模式

2021-04-23 05:16:30 字數 1315 閱讀 5880

head first 設計模式上給出的工廠方法模式定義:它定義了乙個建立物件的介面,但由子類決定要例項化的類是哪乙個。工廠方法讓類把例項化推遲到子類。工廠方法讓子類決定要例項化的類是哪乙個,所謂的「決定」,並不是指模式允許子類本身在執行時做決定,而是指在編寫建立者類時,不需要知道實際建立的產品是哪乙個,選擇了使用那個子類,自然就決定了實際建立的產品是什麼。

這裡有個很好的例子,講的是pizza店的故事,就是說每個地方要建立不同的pizza店,而且每個地方pizza店的pizza的風味也不一樣,也就是口味不一樣,但在pizza店做pizza的整個流程基本是一樣的。下面應用工廠方法模式來描述這種需求。

首先建立pizza類:這是基類,製作pizza的基本流程是一樣的,只是在加工的時候調料不一樣而已,所以把這部作為抽象方法。

public

abstract

class pizza 

public

void cut()

public

void box()

}下面是pizzastore這個工廠類。

public

abstract

class pizzastore 

}可以看到其中的createpizza方法為抽象方法,來建立pizza例項。

下面是nypizzastore,pizzastore的子類,實現createpizza方法。

public

class nypizzastore extends pizzastore else

if (type.equals("veggie"))

return

null;}}

這個子類決定它要例項化的產品。

下面給出nystylechessepizza,和nystyleveggiepizza的定義。

public

class nystylechessepizza extends pizza 

}public

class nystyleveggiepizza extends pizza 

}這樣就完成了乙個例子,在上層是pizzastore來建立pizza,而在例項化層面是nypizzastore在建立nystyle pizza。剛好是平行的關係。

下面是測試的一段**。

public

class testabstractfactorymethod 

}執行的結果是:

this is ny style chesse pizza.

bake

cutbox

this is ny style veggie pizza.

bake

cutbox

工廠方法模式 工廠方法模式

工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...

工廠方法模式 工廠方法模式 二

工廠方法模式是對簡單工廠的進一步抽象和封裝,需要新的類物件時不需要對既有工廠類進行修改,而是增加新的工廠類。工程類可以使用模版進一步封裝,由編譯器來生成 從而減少 編寫工作量。工廠方法的 c 實現01part產品抽象基類class animal virtual void show 0 02part產...

工廠方法模式(一) 簡單工廠方法模式

ps 第二篇學習部落格,堅持就是勝利。繼續設計模式的學習,記錄工廠模式,加深自己的理解。基本結構 abstractproduct 用來定義基本的商品的抽象 public abstract class abstractphoneproduct 用來實現抽象商品,生成各種商品 public class ...