工厂模式
2020-01-13 本文已影响0人
鬼厉
- 介绍
工厂模式也属于创建型模式,相比于简单工厂模式而言不再由一个工厂决定做什么,而是由子工厂自己决定。
仍以生成电脑为例,简单工厂模式由一个工厂通过类型来决定生产哪种电脑,工厂模式就变为由多个工厂来决定生产哪种电脑。
2.结构图
Computer为接口,LenovoComputer,DellComputer分别实现此接口。
Factory 为接口,LenovoFactory,DellFactory分别实现此接口。
LenovoFactory工厂负责生成联想电脑,DellFactory工厂负责生产戴尔电脑。
3.示例代码
package factory
import "fmt"
type Factory interface {
Create() Computer
}
//联想电脑工厂
type LenovoFactory struct {
}
func (*LenovoFactory) Create() Computer {
return new(LenovoComputer)
}
//戴尔电脑工厂
type DellFactory struct {
}
func (*DellFactory) Create() Computer {
return new(DellComputer)
}
type Computer interface {
MadeComputer()
}
//生产联想电脑
type LenovoComputer struct{}
func (*LenovoComputer) MadeComputer() {
fmt.Println("made Lenovo computer start ...")
}
//生产戴尔电脑
type DellComputer struct{}
func (*DellComputer) MadeComputer() {
fmt.Println("made Dell computer start ...")
}
func main() {
var computer Computer
var fac Factory
//生产联想
fac = &LenovoFactory{}
computer = fac.Create()
computer.MadeComputer()
//生产戴尔
fac = &DellFactory{}
computer = fac.Create()
computer.MadeComputer()
}
输出结果:
made Lenovo computer start ...
made Dell computer start ...
Process finished with exit code 0