簡單工廠模式

2021-10-10 20:56:28 字數 1534 閱讀 3466

優點和缺點

優點:工廠類包含必要的邏輯判斷,可以決定在什麼時候建立哪乙個產品的例項。客戶端可以免除直接建立產品物件的職責,很方便的建立出相應的產品。工廠和產品的職責區分明確。

客戶端無需知道所建立具體產品的類名,只需知道引數即可。 也可以引入配置檔案,在不修改客戶端**的情況下更換和新增新的具體產品類。

缺點:簡單工廠模式的工廠類單一,負責所有產品的建立,職責過重,一旦異常,整個系統將受影響。且工廠類**會非常臃腫,違背高聚合原則。

使用簡單工廠模式會增加系統中類的個數(引入新的工廠類),增加系統的複雜度和理解難度

系統擴充套件困難,一旦增加新產品不得不修改工廠邏輯,在產品型別較多時,可能造成邏輯過於複雜 簡單工廠模式使用了 static

工廠方法,造成工廠角色無法形成基於繼承的等級結構。

應用場景:

對於產品種類相對較少的情況,考慮使用簡單工廠模式。使用簡單工廠模式的客戶端只需要傳入工廠類的引數,不需要關心如何建立物件的邏輯,可以很方便地建立所需產品 。

模式的結構與實現 簡單工廠模式的主要角色如下:

簡單工廠(******factory):

是簡單工廠模式的核心,負責實現建立所有例項的內部邏輯。工廠類的建立產品類的方法可以被外界直接呼叫,建立所需的產品物件。

抽象產品(product):

是簡單工廠建立的所有物件的父類,負責描述所有例項共有的公共介面。

具體產品(concreteproduct):

是簡單工廠模式的建立目標。

這些是網上找到的解釋; 我的實際應用是根據不同的裝置熱點id 匹配對應的鎖,每把鎖的裝置開鎖方式不同

public inte***ce lock
public class sm110lock implements lock 

@override

public int closelock()

@override

public int getlockdoor()

@override

public int getlock()

}

public class sm112block implements lock 

@override

public int closelock()

@override

public int getlockdoor()

@override

public int getlock()

}

public class lockfactory else if (id.contains("sm00b"))else if (id.contains("sm00c"))

return null;

}}

//直接呼叫就可以獲取對應的例項物件了.

lockfactory .getlockobject("sm00a00000")

工廠模式 簡單工廠

簡單工廠其實並不是乙個設計模式,反而比較像一種程式設計習慣。我個人的這樣總結簡單工廠 建立乙個類,封裝建立物件的 故事 現在我要開一家披薩店,叫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...