簡單工廠模式

2021-10-02 07:24:36 字數 1525 閱讀 7138

簡單工廠模式,又稱為靜態工廠方法模式。簡單工廠模式,就是由乙個工廠類,根據傳入的引數,決定建立出哪一種產品類的例項。

從上圖可以看出,簡單工廠模式涉及到工廠角色、抽象產品角色、具體產品角色。

public

inte***ce

product

public

class

concreteproduct

implements

product

}

public

class

creator

}

責任的分割。簡單工廠模式的核心是工廠類,這個類含有必要的判斷邏輯,可以決定在什麼時候建立哪乙個產品類的例項。而客戶端可以免除直接建立產品物件的責任,而僅僅負責「消費」產品。簡單工廠模式,通過這種做法,實現了對責任的分割。

當產品類有複雜的多層次等級結構時,工廠類只有它自己,以不變應萬變,這就是簡單工廠模式的缺點。

這個工廠類集中了所有產品的建立邏輯,形成了乙個無所不知的全能類。產品類有不同的介面種類時,工廠類需要判斷在什麼時候建立某種產品。這樣對於時機的判斷和對於哪一種具體產品的判斷邏輯混雜在一起,使得系統在將來進行功能拓展時較為困難。這一缺點在工廠方法模式中得到克服。

簡單工廠模式,使用靜態方法作為工廠方法,無法由子類繼承,因此工廠角色無法形成基於繼承的等級結構。這一缺點在工廠方法模式中得到克服。

開閉原則——對拓展開放,對修改關閉。它要求乙個系統的設計能夠允許系統在無需修改的情況下,拓展其功能。那麼簡單工廠模式是否滿足這個條件呢?

要回答這個問題,首先需要將系統劃分成不同的子系統,在考慮功能拓展對這些子系統的要求。一般而言,乙個系統總是可以劃分成產品的消費者角色(client)、產品的工廠角色(factory)以及產品角色(product)三個子系統。

在這個系統中,功能的拓展體現在引進新的產品上。開閉原則要求當新的產品加入系統時,無需對現有的**進行修改。這一點對於產品的消費角色(圖中的client)是成立的,對於工廠角色(圖中的factory)是不成立的。

對於產品的消費角色來說,任何時候需要某種產品,只需向工廠角色請求即可。工廠角色在接收到請求後,會自行判斷建立和提供哪乙個產品。所以,產品消費角色無需知道它得到的是哪乙個產品;換言之,產品消費角色無需修改就可以接納新的產品。

對於產品工廠角色來說,必須知道每一種產品,如何建立它們,以及何時向客戶端提供它們。換言之,接納新的產品意味著修改這個工廠角色的源**。

綜上所述,簡單工廠模式,只在有限的程度上支援開閉原則。

工廠模式 簡單工廠

簡單工廠其實並不是乙個設計模式,反而比較像一種程式設計習慣。我個人的這樣總結簡單工廠 建立乙個類,封裝建立物件的 故事 現在我要開一家披薩店,叫bbk 必敗客 披薩,賣很多種披薩 芝士披薩 榴蓮披薩等等,我有乙個orderpizza string type 方法,根據客戶傳來的type來提供不同的披...

工廠模式 簡單工廠

工廠 處理建立物件的細節。目的 將例項化具體類的 從應用中抽離,或者封裝起來,可以避免干擾應用的其他部分。簡單工廠 簡單工廠其實不是乙個設計模式,反而像一種程式設計習慣。產品實現 desc 產品a public inte ce a class a1 implements a override pub...

簡單工廠模式,工廠模式,抽象工廠模式

三種模式看了一天,記錄下自己的理解 headfirst,比薩店為例 1,簡單工廠模式 乙個具體的工廠類 pizzafactory 乙個抽象的產品類pizza,可以派生出多個具體的產品類 客戶 pizzastore類 工廠類 pizzafactory類關聯產品類pizza,工廠生產出不同型別的pizz...