基于简单的工厂模式进行修改,不再设计一个按钮工厂类来统一负责所有产品的创建,而是将具体按钮的创建过程交给专门的工厂子类去完成。不同的子工厂负责创建不同的产品(实例)
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() //制作小狗,说话试音
请发表评论