基於簡單的工廠模式進行修改,不再設計一個按鈕工廠類來統一負責所有產品的創建,而是將具體按鈕的創建過程交給專門的工廠子類去完成。不同的子工廠負責創建不同的產品(實例)
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() //制作小狗,說話試音

