简单工厂模式就是根据不同的参数返回不同的类实例
专门定义一个类 负责创建其他类的实例 被创建的实例都有相同的父类
type CalculateBill interface {
Calculate()string
}
type MaxProfit struct{
}
func (this *MaxProfit)Calculate()string{
return "应付-最大:50贯"
}
type AverageProfit struct{
}
func (this *AverageProfit)Calculate()string{
return "应付-平均:40贯"
}
//TODO 一个可以根据参数返回实例化结构体的类
type SimpleFactory struct{
}
//todo 对呀 你不用知道那个struct实现的细节了 而是只要 向工厂类的方法中 传递一个参数 就能获得一个结构体的实例
func (this *SimpleFactory)DoSimpleFactory(input string)CalculateBill{
switch input {
case "max":
return &MaxProfit{}
case "average":
return &AverageProfit{}
}
return nil
}
测试案例:
func TestFactory(t *testing.T){
factory:=inital.SimpleFactory{}
maxMethod:=factory.DoSimpleFactory("max")
//benshiCar.Car=initial2.Car1{}
//fmt.Println(benshiCar.BenShiFRun())
//macho.ARM64_RELOC_ADDE
fmt.Println(maxMethod.Calculate())
averageMethod:=factory.DoSimpleFactory("average")
fmt.Println(averageMethod.Calculate())
}

