factorymethod.go
最后更新于:2022-04-02 04:48:21
~~~
/*
Factory Method 工厂方法模式:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。
工厂方法使一个类的实例化延迟到其子类
个人想法:简单工厂和工厂模式:简单工厂定义的是静态函数,
一个函数处理所有的产品创建,工厂模式将创建对象过程抽象为一个类组,
有抽象类,有对应产品的创建类,创建的过程有创建类来完成,
工厂模式主要使用的是依赖反转原则
(高层模块不依赖底层模块,统一依赖抽象层,抽象层不依赖细节层,细节层依赖抽象层),
解决简单工厂的缺少开放-封闭原则
作者: HCLAC
日期: 20170306
*/
package factorymethod
//"fmt"
type OperationFunc interface {
SetNumA(float32)
SetNumB(float32)
Result() (float32, bool)
}
type Operation struct {
numberA float32
numberB float32
}
func (o *Operation) SetNumA(num float32) {
if o == nil {
return
}
o.numberA = num
}
func (o *Operation) SetNumB(num float32) {
if o == nil {
return
}
o.numberB = num
}
type OperationAdd struct {
Operation
}
func (a *OperationAdd) Result() (float32, bool) {
if a == nil {
return 0, false
}
return a.numberA + a.numberB, true
}
type OperationSub struct {
Operation
}
func (a *OperationSub) Result() (float32, bool) {
if a == nil {
return 0, false
}
return a.numberA - a.numberB, true
}
type CreateOperation interface {
createoperation(string) OperationFunc
}
type COperationAdd struct {
}
func (c *COperationAdd) createoperation(op string) OperationFunc {
if c == nil {
return nil
}
return &OperationAdd{}
}
type COperationSub struct {
}
func (c *COperationSub) createoperation(op string) OperationFunc {
if c == nil {
return nil
}
return &OperationSub{}
}
~~~
';