Go 设计模式--工厂模式

基于简单的工厂模式进行修改,不再设计一个按钮工厂类来统一负责所有产品的创建,而是将具体按钮的创建过程交给专门的工厂子类去完成。不同的子工厂负责创建不同的产品(实例)

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() //制作小狗,说话试音

  

 

posted @ 2020-04-03 15:25  醉深梦始  阅读(1700)  评论(0)    收藏  举报