Go設計模式 簡單工廠模式

2021-10-10 14:35:03 字數 1405 閱讀 1891

假設有n多個工廠,生產不同的物品,他們擁有相同的行為「生產」,但是通過呼叫「生產」的方法,獲取到的是不同的東西。

再比個打方,狗子,羊子,喵子都會叫,但叫一下卻發出不同的聲音。

實踐中有很多類似的情況,使用簡單工廠模式可以只告知「我是個什麼東西」,就可以使用相同的方法來獲取想要的值。

比如我告訴它,我是條狗,然後我想叫,它就會給我乙個「汪汪汪」;我告訴它我是只貓,然後我一叫就是「喵喵喵」。

定義乙個factory介面,具有「生產」produce這一行為

【inte***ce是go中實現多型的最主要方法。

假設我們有生產漢堡的hamfactory跟生產比薩的pizfactory。

// factory介面

type factory inte***ce

type hamfactory struct

type pizfactory struct

提供乙個例項化工廠的函式,要告知需要乙個什麼樣的工廠,即可得到這種型別的工廠的例項

// 例項化

func

newfactory

(str string

) factory

case

"pizza"

:return

&pizfactory

default

:return

nil}

}

最後將factory中定義的行為produce在各類工廠中實現即可。

// 實現produce

func

(*hamfactory)

produce()

string

func

(*pizfactory)

produce()

string

需要注意例項化的函式newfactory的返回值是乙個factory inte***ce,如果factory中定義的方法沒有全部實現,則無法通過編譯。ide下大概會被劃紅線,提示missing method,比如如果注釋掉pizfactory的produce,就會像這樣。

這裡就整個漢堡工廠,整個比薩工廠,輸出它們的產物。應該是符合期望的「produce hamburger」與「produce pizza」

func

test******factory

(t *testing.t)

輸出:

設計模式 工廠模式(簡單工廠)

一 簡單工廠 定義 簡單工廠模式 factory pattern 屬於類的創新型模式,又叫靜態工廠方法模式 static factorymethod pattern 是通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。特點 工廠類直接實現,乙個產品介面,乙個工廠類可以產生多...

Go實現設計模式 工廠模式

抽象工廠模式 工廠模式,屬於設計模式三大類之一的建立模式裡。其核心思想是提供乙個建立物件的超類,允許通過該介面指定建立子類物件的型別。從go的角度應用的說,工廠模式就是提供乙個超類,這個超類有乙個建立介面,我們可以通過這個介面獲取不同的物件,這些物件實現了同一系列的介面,所以他們可以用同乙個inte...

Go設計模式 抽象工廠模式

對照下面模板類圖作個簡單說明抽象工廠的四個角色叭。抽象工廠角色 即圖中的abstract creator,抽象工廠核心,也就是那個 超級工廠 與應用程式無關,超級工廠所建立的工廠必須實現提供的介面 具體工廠角色 即圖中的creator,用於建立具體產品物件。抽象產品角色 即圖中的abstract p...