基于简单的工厂模式进行修改,不再设计一个按钮工厂类来统一负责所有产品的创建,而是将具体按钮的创建过程交给专门的工厂子类去完成。不同的子工厂负责创建不同的产品(实例)
package factory
import(
"fmt"
)
//玩具工厂
type ToyFactory interface{
Create()Toy //制造功能,返回一个玩具
}
//所有玩具都有一个功能
type Toy interface{
Speak() //都会说话,但是每种玩具说的话不一样
}
//车间1 可以制作玩具猫,就叫猫工厂吧
type CatFactory struct {
}
//玩具猫模型
type Cat struct {
}
//玩具猫会说话
func (this *Cat)Speak(){
fmt.Println("hello,I am a Cat...")
}
//车间1 制作玩具猫的方法
func (this *CatFactory)Create() Toy {
return &Cat{}
}
//车间2 可以制作玩具狗,就叫狗工厂吧
type DogFactory struct{
}
//狗模具
type Dog struct {
}
//狗也会说话
func (this *Dog)Speak(){
fmt.Println("hello, i am a Dog...")
}
//车间2 制作玩具狗的方法
func (this *DogFactory)Create() Toy {
return &Dog{}
}
cat := &factory.CatFactory{} //进入猫工厂
cat.Create().Speak() //制作猫猫,说话试音
dog := &factory.DogFactory{} //进入狗工厂
dog.Create().Speak() //制作小狗,说话试音

