一、模式定義
二、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...