工程目录

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())}