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

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM