簡單工廠模式

2021-08-18 23:29:20 字數 1730 閱讀 3580

一、模式定義

二、uml圖結構:

簡單工廠模式

上圖角色主要分為三部分:

簡單工廠類:這是核心內容,它是用來建立所有實現類的內部處理邏輯。該類被呼叫,根據所傳遞的引數來決定例項化對應的類。

抽象類(運算類):簡單工廠模式所建立所有物件的父類。

實現類(加減乘除類):所建立的具體例項物件,當然這些具體的類都是繼承上面的抽象類。

三、例項分析:

通過計算器小例子來簡單入門了解下簡單工廠模式。這裡計算器講解僅實現加減乘除功能,通過物件導向的思想來設計,引入簡單工廠模式。

先看下抽象類和實現類簡單**:

public abstract class operation 

class addoperation extends operation

}class suboperation extends operation

}class muloperation extends operation

}class divoperation extends operation

return numbera / numberb;}}

那麼下面是工廠類**:

public class operationfactory 

return op;}}

測試類:

public class calculator  catch (arithmeticexception e)    }}

乙個簡單的工廠模式就完成了。實現了**的邏輯和業務分離。並且對外還隱藏了建立例項的具體方式。同時還具有良好的擴充套件性,就算此時需要再新增另外一種運算方式,那麼只需要新增乙個具體的實現類,並在工廠中新增對應的分支即可。

四、優點:

(1)、工廠類通過邏輯判斷,決定什麼時候建立哪一種實現類,避免外部直接建立例項的責任。

(2)、外部不需要了解所建立例項具體類,只需要知道傳遞對應的引數即可,對於複雜的類,可以減輕使用者的記憶。

(3)、就算需要擴充套件其他的例項,也不需要修改外部**,只需要新增對應的實力類並修改工廠類。

五、缺點:

(1)、由於所有的實力類都是工廠類建立,那麼如果該類出現問題不能正常工作,那麼整個系統都會受到影響。

(2)、不斷的增加例項類的個數,那麼就會增加系統的複雜度和理解難度。

(3)、擴充套件困難,每次新增新例項就需要修改工廠類,可能會造成工廠邏輯複雜,不利於維護。

六、使用場景:

七、模式jdk使用:

public final static dateformat getdateinstance();

public final static dateformat getdateinstance(int style);

public final static dateformat getdateinstance(int style,locale

locale);

工廠模式 簡單工廠

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