定義乙個建立產品物件的工廠介面,將產品物件的實際建立工作推遲到具體子工廠類當中。
工廠模式算是乙個比較簡單的模式了,簡單理解就是,建立物件的工作交給工廠即可,客戶端不用關心物件怎麼來的,直接從工廠獲得即可,類似於spring 的ioc。
工廠方法模式由抽象工廠、具體工廠、抽象產品和具體產品等4個要素構成。
抽象工廠(abstract factory):提供了建立產品的介面,呼叫者通過它訪問具體工廠的工廠方法 newproduct()
來建立產品。
具體工廠(concretefactory):主要是實現抽象工廠中的抽象方法,完成具體產品的建立。
抽象產品(product):定義了產品的規範,描述了產品的主要特性和功能。
具體產品(concreteproduct):實現了抽象產品角色所定義的介面,由具體工廠來建立,它同具體工廠之間一一對應。
//工廠模式
func
main()
//定義產品的介面(電腦)
type ipc inte***ce
//定義乙個抽象電腦工廠
type ipcfactory inte***ce
//定義乙個具體電腦工廠,工廠實現類
type lenovofactory struct
func
(factory *lenovofactory)
producepc
() ipc
}//定義乙個聯想電腦,產品實現類 ,具體產品
type lenovopc struct
func
(pc *lenovopc)
compute()
提供乙個建立一組相關或相互依賴物件的介面,且訪問類無須指定所要產品的具體類就能得到同族的不同等級的產品的模式結構。抽象工廠模式是工廠方法模式的公升級版本,工廠方法模式只生產乙個等級的產品,而抽象工廠模式可生產多個等級的產品。
系統中有多個產品族,每個具體工廠建立同一族但屬於不同等級結構的產品。
系統一次只可能消費其中某一族產品,即同族的產品一起使用。
在工廠方法模式中,廠家只生產 pc,採用抽象工廠模式後,廠家還可以生產手機。
//工廠模式
func
main()
//定義產品的介面(電腦)
type ipc inte***ce
type iphone inte***ce
//定義乙個抽象電腦工廠
type ifactory inte***ce
//定義乙個具體電腦工廠,工廠實現類
type lenovofactory struct
func
(factory *lenovofactory)
producepc
() ipc
}func
(factory *lenovofactory)
producephone
() iphone
}//定義乙個聯想電腦,產品實現類 ,具體產品
type lenovopc struct
func
(pc *lenovopc)
compute()
//定義乙個聯想 手機例項
工廠模式與抽象工廠模式
原始出處 作者資訊和本宣告。否則將追究法律責任。工廠模式與抽象工廠模式,相信同行不會陌生 在網上及相關書裡面也看過這方面的介紹 推薦這兩本書 steven john metsker s design patterns in c 和 gof s design pattern framework2.0 ...
工廠模式與抽象工廠模式
1 工廠模式 定義了一組建立物件的介面,但是由子類決定要例項化的類是哪乙個。工廠方法把類的例項化推遲到子類中。現在考慮有pizzastore有一些子類 加盟店 他們有可能對pizza的做法進行一些改良,即createpizza方法需要公升級。工廠方法的做法是,在基類中建立乙個形為abstract p...
抽象工廠模式 抽象工廠模式
抽象工廠模式其實是圍繞了乙個超級工廠建立其他的工廠 可參考工廠模式 這個超級工廠又可以想像成是其他工廠的工廠,這種設計模式是一種建立型模式。在抽象工廠模式中,介面是負責建立乙個相關物件的工廠,不需要顯式指出其類。每個生成的工廠都能按照工廠模式提供物件。意圖提供乙個建立一系列相關或相互依賴物件的介面,...