设计模式Go版-简单工厂
2018-01-24 17:44
162 查看
----------------simple.go-----------------
package factory // 定义通用接口 type Operation interface { GetResult() float64 SetNumA(float64) SetNumB(float64) } // 定义通用实现类及方法 type BaseOperation struct { numberA float64 numberB float64 } func (self *BaseOperation) SetNumA(val float64) { self.numberA = val } func (self *BaseOperation) SetNumB(val float64) { self.numberB = val } // 加法操作 type OperationAdd struct { BaseOperation } func (self *OperationAdd) GetResult() float64 { return self.numberA + self.numberB } // 减法操作 type OperationSub struct { BaseOperation } func (self *OperationSub) GetResult() float64 { return self.numberA - self.numberB } // 乘法操作 type OperationMul struct { BaseOperation } func (self *OperationMul) GetResult() float64 { return self.numberA * self.numberB } // 除法操作 type OperationDiv struct { BaseOperation } func (self *OperationDiv) GetResult() float64 { if self.numberB == 0 { panic("被除数不能为0") } return self.numberA / self.numberB } func CreateOperation(operation string) (op Operation) { switch operation { case "+": op = new(OperationAdd) case "-": op = new(OperationSub) case "/": op = new(OperationDiv) case "*": op = new(OperationMul) default: panic("运算符错误!") } return }
----------------simple_test.go-----------------
package factory import "testing" func TestCreateOperation(t *testing.T) { op := CreateOperation("+") a, b := 3.0, 2.0 op.SetNumA(a) op.SetNumB(b) result := op.GetResult() if result != a+b { t.Fatalf("%f+%f should be %f,not %f", a, b, a+b, result) } }
相关文章推荐
- 设计模式——简单工厂
- 设计模式之简单工厂模式加反射
- Unity_简单工厂设计模式_029
- 《Android之大话设计模式》--设计模式 创建型模式 第一章:简单工厂模式
- Java 设计模式之简单工厂模式
- 简单工厂模式——设计模式(一)
- 设计模式-简单工厂模式
- 设计模式学习笔记(一):简单工厂
- Java设计模式2:简单工厂模式
- 设计模式之简单工厂模式
- 设计模式--简单工厂-工厂方法
- 设计模式 之 简单工厂与工厂方法
- 设计模式之简单工厂、工厂方法、抽象工厂
- java简单工厂设计模式实现计算器
- 设计模式实战应用之四:简单工厂模式
- Java设计模式之简单工厂模式
- 设计模式:简单工厂模式
- 简单工厂设计模式
- 【设计模式】简单工厂VS工厂方法
- 设计模式 之 简单工厂