我们一起来读书吧 关注:143贴子:2,223
  • 0回复贴,共1
我是一个黑心老板,我有一个山寨服装工厂,主要做一些高仿的鞋子和衬衫。下面介绍下我是如何借助抽象工厂的思路高效进行生产的。
我们工厂主要有两条流水线,一条制作鞋子,一条制作衬衫。
type ISportsFactory interface {
makeShoe() IShoe
makeShirt() IShirt
}
因为我是黑心老板,所以无论是鞋子还是衬衫,我们只满足大小合适,和牌子正确能装逼就行。因此我们的流水线只做贴牌和修剪尺寸两件事
type Shoe struct {
logo string
size int
}
type Shirt struct {
logo string
size int
}
type IShoe interface {
setLogo(logo string)
setSize(size int)
getLogo() string
getSize() int
}
type IShirt interface {
setLogo(logo string)
setSize(size int)
getLogo() string
getSize() int
}
有了这些我就的工厂就可以投产了,早期我们先山寨一些大品牌,阿迪和耐克
type AdidasShirt struct {
Shirt
}
type AdidasShoe struct {
Shoe
}
转换流水线成为阿迪生产线
func (a *Adidas) makeShoe() IShoe {
return &AdidasShoe{
Shoe: Shoe{
logo: "adidas",
size: 44,
},
}
}
func (a *Adidas) makeShirt() IShirt {
return &AdidasShirt{
Shirt: Shirt{
logo: "adidas",
size: 185,
},
}
}
我是厂长负责,决定生产什么牌子的产品
func GetSportsFactory(brand string) (ISportsFactory, error) {
if brand == "adidas" {
return &Adidas{}, nil
}
if brand == "nike" {
return &Nike{}, nil
}
return nil, fmt.Errorf("Wrong brand type passed")
}
开工
func main() {
adidasFactory, _ := GetSportsFactory("adidas")
nikeFactory, _ := GetSportsFactory("nike")
nikeShoe := nikeFactory.makeShoe()
nikeShirt := nikeFactory.makeShirt()
adidasShoe := adidasFactory.makeShoe()
adidasShirt := adidasFactory.makeShirt()
printShoeDetails(nikeShoe)
printShirtDetails(nikeShirt)
printShoeDetails(adidasShoe)
printShirtDetails(adidasShirt)
}
func printShoeDetails(s IShoe) {
fmt.Printf("Logo: %s", s.getLogo())
fmt.Println()
fmt.Printf("Size: %d", s.getSize())
fmt.Println()
}
func printShirtDetails(s IShirt) {
fmt.Printf("Logo: %s", s.getLogo())
fmt.Println()
fmt.Printf("Size: %d", s.getSize())
fmt.Println()
}


IP属地:北京1楼2024-09-13 16:23回复