12-抽象工廠方法模式(Easy搞定Golang設(shè)計模式)

type AbstractGraphics interface { display() } type AbstractMemory interface { storage() } type AbstractCpu interface { calculate() } type AbstractMainBoard interface { createGraphics() AbstractGraphics createMemory() AbstractMemory createCpu() AbstractCpu } // 具體層 /*intel產(chǎn)品族*/ type IntelGraphics struct{} type IntelMemory struct{} type IntelCpu struct{} func (g *IntelGraphics) display() { fmt.Println("Intel顯卡顯示") } func (m *IntelMemory) storage() { fmt.Println("Intel內(nèi)存存儲") } func (c *IntelCpu) calculate() { fmt.Println("IntelCpu計算") } type IntelFactory struct { AbstractMainBoard } func (i *IntelFactory) createGraphics() AbstractGraphics { ig := new(IntelGraphics) return ig } func (i *IntelFactory) createMemory() AbstractMemory { im := new(IntelMemory) return im } func (i *IntelFactory) createCpu() AbstractCpu { ic := new(IntelCpu) return ic } /*NVIDIA產(chǎn)品族*/ type NvidiaGraphics struct{} type NvidiaMemory struct{} type NvidiaCpu struct{} func (g *NvidiaGraphics) display() { fmt.Println("NVIDIA顯示") } func (m *NvidiaMemory) storage() { fmt.Println("NVIDIA內(nèi)存存顯卡儲") } func (c *NvidiaCpu) calculate() { fmt.Println("NVIDIACpu計算") } type NvidiaFactory struct { AbstractMainBoard } func (i *NvidiaFactory) createGraphics() AbstractGraphics { ng := new(NvidiaGraphics) return ng } func (i *NvidiaFactory) createMemory() AbstractMemory { nm := new(NvidiaMemory) return nm } func (i *NvidiaFactory) createCpu() AbstractCpu { nc := new(NvidiaCpu) return nc } // 業(yè)務(wù)邏輯層 func main() { IFac := new(IntelFactory) iGraphics := IFac.createGraphics() iGraphics.display() NFac := new(NvidiaFactory) nCpu := NFac.createCpu() nCpu.calculate() }
標(biāo)簽: