工厂模式之工厂方法(golang)

  

package factoryMethod

import log "github.com/sirupsen/logrus"

type phoneFactory interface {
	createPhone() phone
}

//苹果工厂
type appleFactory struct {
}
//苹果工厂 创建苹果手机
func(*appleFactory) createPhone() phone{
	return &apple{}
}

//华为工厂
type huaweiFactory struct {

}

//华为工厂创建华为手机
func(*huaweiFactory) createPhone() phone{
	return &huawei{}
}

//华为工厂
type xiaomiFactory struct {

}

//华为工厂创建华为手机
func(*xiaomiFactory) createPhone() phone{
	return &xiaomi{}
}



//定义一个phone接口
type phone interface {
	Call() ;
}

//type1
type apple struct{
}
//实现call方法
func (*apple) Call() {
	log.Info("我是苹果手机,我可以打电话")
}


//type2
type huawei struct {
}

//实现call方法
func (*huawei) Call() {
	log.Info("我是华为手机,我可以打电话")
}

//type3
type xiaomi struct {
}

//实现call方法
func (*xiaomi) Call() {
	log.Info("我是小米手机,我可以打电话")
}

  测试:

package factoryMethod

import "testing"

func TestType1(t *testing.T){
	var( factory phoneFactory)
	factory = &appleFactory{}
    apple := factory.createPhone()
    apple.Call()
}

  测试结果:

 

posted @ 2022-02-09 15:33  梦里藏梦、  阅读(76)  评论(0)    收藏  举报