GO AbstractFactory 抽象工廠

2021-09-24 06:04:11 字數 1212 閱讀 6996

模式定義

提供乙個介面,讓該介面負責建立一系列「相關或者相互依賴的物件」,無需指定它們具體的類。

——《設計模式》gof

要點總結

如果沒有對應「多系列物件構建」的需求變化,則沒有必要使用abstract factory 模式,這時候使用簡單的工廠完全可以。

「系列物件」指的是在某一特定系列下的物件之間相互依賴、或作用的關係。不同系列的物件之間不能相互依賴。

abstract factory 模式主要在於應對「新系列」的需求變動。其缺點在於難以應對「新物件」的需求變動。

典型實現

把一系列相關物件由乙個基類關聯在一起,防止錯誤的交叉呼叫。

要點總結和典型實現來自於 --李建忠 c++ 抽象工廠設計模式總結

package main

import "fmt"

// 產品介面

type brand inte***ce

// 產品工廠介面

type brandfactory inte***ce

// 建立mi品牌

type mi struct

func (m *mi) producephone()

func (m *mi) producepc()

// 建立mi手機工廠

type mifactory struct

func (m *mifactory) createfactory() brand

}// 建立hw品牌

type hw struct

func (hw *hw) producephone()

func (hw *hw) producepc()

type hwfactory struct

// 建立hw手機工廠

func (hw *hwfactory) createfactory() brand

}type factory struct

func (f *factory) produce()

func main()

f.bf = mi

f.produce()

hw := new(hwfactory)

f.bf = hw

f.produce()

}

設計模式之工廠模式(簡單工廠 工廠模式 抽象工廠)

參考博文 侵權必刪 什麼是工廠模式 通過 物件建立 模式繞開new,來避免物件建立 new 過程中所導致的緊耦合 依賴具體類 適用性 使用new建立物件且導致緊耦合的場景。思考 物件導向程式設計要以動態的思維去看待 換句話說,在看 時需要時間概念,發現 在未來的穩定之處和變化之處。一般介面和抽象類是...

飯工和碗工

飯工和碗工 飯工和碗工 一看這兩個名詞,你一定費解。聽過鉗工電工清潔工搬運工,或是張工王工,那聽過這個稱謂呀。甭急,這是我的發明,你聽我慢慢道來。我兒子兒媳都在天津工作,住的地方到工作單位較遠。早晨六點半出發,晚上七點後回家。若遇見堵車,回到家就八點多了。他們倆既辛苦又繁忙。我和老伴住在陝西老家,身...

飯工和碗工

飯工和碗工 飯工和碗工 一看這兩個名詞,你一定費解。聽過鉗工電工清潔工搬運工,或是張工王工,那聽過這個稱謂呀。甭急,這是我的發明,你聽我慢慢道來。我兒子兒媳都在天津工作,住的地方到工作單位較遠。早晨六點半出發,晚上七點後回家。若遇見堵車,回到家就八點多了。他們倆既辛苦又繁忙。我和老伴住在陝西老家,身...