工厂模式之工厂方法(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()
}
测试结果:


浙公网安备 33010602011771号