简单工厂模式就是根据不同的参数返回不同的类实例
专门定义一个类 负责创建其他类的实例 被创建的实例都有相同的父类
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()) }