27 簡單工廠模式

2021-08-31 07:34:51 字數 1890 閱讀 2444

學習目標:

1、了解工廠模式的概念

2、掌握工廠模式的編寫模板

學習過程:

一、什麼簡單工廠模式

從設計模式的型別上來說,簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法(static factory method)模式,但不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的乙個特殊實現。

簡單工廠模式的實質是由乙個工廠類根據傳入的引數,動態決定應該建立哪乙個產品類(這些產品類繼承自乙個父類或介面)的例項。

該模式中包含的角色及其職責

二、計算機的工廠模式實現

我們以前實現乙個簡單的計算器,比如下面這個計算器類,有加和減兩個方法。**如下:

publicclasscal

publicintsub(inta,intb)

}

現在要求你新增乘和除兩個方法,我們是不是有違反了開閉原則了。所以我們要使用另外一種方法實現這個計算器。

1、定義抽象產品角色。定義乙個計算操作類,這裡我們使用介面定義,**如下:

publicinte***cecomputer

2、定義具體產品角色。不管是加減乘除那個方法的實現都是乙個具體的實現,這裡我們先定義加和減兩個實現類:**如下:

加法實現類:

publicclassaddimplementscomputer

}

減法實現類:

publicclasssubimplementscomputer

}

3、定義工廠角色。由這個工廠類生成不同的產品角色,這樣使用者使用起來就比較方便了。**如下:

publicclasscompute***ctoryelseif(op.equals("-"))

returncomputer;

}

}

4、測試。使用者在呼叫時候,直接使用工廠類,傳入不同引數生產出不同的產品角色即可,測試**如下:

publicclassrun

}

現在我們如果要新增乙個乘法的實現類,就不需要修改原來的加法和減法的實現了,不過還是要修改工廠類,這也是簡單工廠類不好的地方。

有關設計模式的話題還有很多,作為初級階段我們就先學到這裡,以後我們可以專門開乙個專題講解設計模式。

工廠模式 簡單工廠

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