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()
}
标签: