欢迎光临散文网 会员登陆 & 注册

12-抽象工厂方法模式(Easy搞定Golang设计模式)

2023-06-26 15:44 作者:思qing22  | 我要投稿
type AbstractGraphics interface {
   display()
}

type AbstractMemory interface {
   storage()
}
type AbstractCpu interface {
   calculate()
}

type AbstractMainBoard interface {
   createGraphics() AbstractGraphics
   createMemory() AbstractMemory
   createCpu() AbstractCpu
}

// 具体层
/*intel产品族*/

type IntelGraphics struct{}
type IntelMemory struct{}
type IntelCpu struct{}

func (g *IntelGraphics) display() {
   fmt.Println("Intel显卡显示")
}

func (m *IntelMemory) storage() {
   fmt.Println("Intel内存存储")
}

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产品族*/
type NvidiaGraphics struct{}
type NvidiaMemory struct{}
type NvidiaCpu struct{}

func (g *NvidiaGraphics) display() {
   fmt.Println("NVIDIA显示")
}

func (m *NvidiaMemory) storage() {
   fmt.Println("NVIDIA内存存显卡储")
}

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
}
// 业务逻辑层
func main() {
   IFac := new(IntelFactory)
   iGraphics := IFac.createGraphics()
   iGraphics.display()

   NFac := new(NvidiaFactory)
   nCpu := NFac.createCpu()
   nCpu.calculate()
}

12-抽象工厂方法模式(Easy搞定Golang设计模式)的评论 (共 条)

分享到微博请遵守国家法律