學習目標:
1、了解工廠模式的概念
2、掌握工廠模式的編寫模板
學習過程:
一、什麼簡單工廠模式
從設計模式的型別上來說,簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法(static factory method)模式,但不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的乙個特殊實現。
簡單工廠模式的實質是由乙個工廠類根據傳入的引數,動態決定應該建立哪乙個產品類(這些產品類繼承自乙個父類或介面)的例項。
該模式中包含的角色及其職責
二、計算機的工廠模式實現
我們以前實現乙個簡單的計算器,比如下面這個計算器類,有加和減兩個方法。**如下:
public
class
cal
public
int
sub(
int
a,
int
b)
}
現在要求你新增乘和除兩個方法,我們是不是有違反了開閉原則了。所以我們要使用另外一種方法實現這個計算器。
1、定義抽象產品角色。定義乙個計算操作類,這裡我們使用介面定義,**如下:
public
inte***ce
computer
2、定義具體產品角色。不管是加減乘除那個方法的實現都是乙個具體的實現,這裡我們先定義加和減兩個實現類:**如下:
加法實現類:
public
class
add
implements
computer
}
減法實現類:
public
class
sub
implements
computer
}
3、定義工廠角色。由這個工廠類生成不同的產品角色,這樣使用者使用起來就比較方便了。**如下:
public
class
compute***ctory
else
if
(op.equals(
"-"
))
return
computer;
}
}
4、測試。使用者在呼叫時候,直接使用工廠類,傳入不同引數生產出不同的產品角色即可,測試**如下:
public
class
run
}
現在我們如果要新增乙個乘法的實現類,就不需要修改原來的加法和減法的實現了,不過還是要修改工廠類,這也是簡單工廠類不好的地方。
有關設計模式的話題還有很多,作為初級階段我們就先學到這裡,以後我們可以專門開乙個專題講解設計模式。
工廠模式 簡單工廠
簡單工廠其實並不是乙個設計模式,反而比較像一種程式設計習慣。我個人的這樣總結簡單工廠 建立乙個類,封裝建立物件的 故事 現在我要開一家披薩店,叫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...