簡單工廠模式(****** factory pattern):又稱為靜態工廠方法(static factory method)模式,它屬於類建立型模式。在簡單工廠模式中,可以根據引數的不同返回不同類的例項。簡單工廠模式專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。
簡單工廠模式包含如下角色:factory:工廠角色
工廠角色負責實現建立所有例項的內部邏輯
product:抽象產品角色
抽象產品角色是所建立的所有物件的父類,負責描述所有例項所共有的公共介面
concreteproduct:具體產品角色
具體產品角色是建立目標,所有建立的物件都充當這個角色的某個具體類的例項。
工廠類負責建立的物件比較少:由於建立的物件較少,不會造成工廠方法中的業務邏輯太過複雜。客戶端只知道傳入工廠類的引數,對於如何建立物件不關心:客戶端既不需要關心建立細節,甚至連類名都不需要記住,只需要知道型別所對應的引數。
package main
import
("fmt"
)type ilog inte***ce
type stdout struct
func
(s *stdout)
writelog
(msg string
)type file struct
func
(s *file)
writelog
(msg string
)type logtype int
const
( stdout logtype =
iota+1
file
)func
newilog
(t logtype)
(ilog,
error)}
func
main()
log.
writelog
("hello"
)}
設計模式 工廠模式(簡單工廠模式和方法工廠模式)
一 簡單工廠模式 簡單工廠模式概述 又叫靜態工廠方法模式,它定義乙個具體的工廠類負責建立一些類的例項 優點 客戶端不需要在負責物件的建立,從而明確了各個類的職責 缺點 這個靜態工廠類負責所有物件的建立,如果有新的物件增加,或者某些物件的建立方式不同,就需要不斷的修改工廠類,不利於後期的維護 動物類 ...
Golang設計模式 建立型 簡單工廠
李雷喜歡上了韓梅梅,他知道韓梅梅喜歡吃漢堡,於是就想買漢堡給她吃,但李雷不確定韓梅梅喜歡的是肯德基的漢堡還是麥當勞的漢堡,怎樣幫助他呢?最直觀和最簡單的實現就是if else if prefer kfc else if prefer mcdonalds 這個實現的問題是客戶端關注了產品 漢堡 建立的...
Golang設計模式 工廠模式
定義乙個用於建立物件的介面,讓子類界定例項化哪個類。工廠方法使乙個類的例項化延遲到子類。簡單工廠模式的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶的選擇動態例項化相關的類,對於客戶端來說,去除了與具體產品的依賴。如果是翻譯,讓客戶端不管用哪個類的例項,只需把翻譯型別 int 1,2,3 給工廠...