工程目录
OperatorFactory.go
package Factory//理论运行类的接口type Operator interface { SetLeft(int) SetRight(int) Result() int}//工厂接口type OperatorFactory interface { Create() Operator}
OperatorData.go
package Factory//数据type OperatorData struct { left, right int}//赋值func (op *OperatorData) SetLeft(left int) { op.left = left}func (op *OperatorData) SetRight(right int) { op.right = right}
PlusOpertaorFactory.go
package Factory//操作的形象type PlusOpertaorFactory struct {}//操作类中蕴含操作数type PlusOpertaor struct { *OperatorData}//理论运行办法func(o PlusOpertaor) Result() int { return o.right + o.left}func(PlusOpertaorFactory) Create() Operator { return &PlusOpertaor{&OperatorData{}}}
SubOpertaorFactory.go
package Factory//操作的形象type SubOpertaorFactory struct {}//操作类中蕴含操作数type SubOpertaor struct { *OperatorData}//理论运行办法func(o SubOpertaor) Result() int { return o.left - o.right}func(SubOpertaorFactory) Create() Operator { return &SubOpertaor{&OperatorData{}}}
factory_test.go
package Factoryimport ( "fmt" "testing")func TestOpertaorFactory(t *testing.T) { var fac OperatorFactory fac = PlusOpertaorFactory{} op := fac.Create() op.SetLeft(20) op.SetRight(10) fmt.Println(op.Result()) fac = SubOpertaorFactory{} op = fac.Create() op.SetLeft(30) op.SetRight(20) fmt.Println(op.Result())}