工厂方法设计模式Golang

工厂方法模式

工厂方法模式(Factory Method Pattern)又称为工厂模式,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,
即通过不同的工厂子类来创建不同的产品对象。

优点 和 缺点

– 优点

  1. 符合开闭原则, 具有很强的扩展性,弹性和可维护性
  2. 可以很好的对累进行约束,
  3. 客户只需要知道所需产品的具体工厂,而无须知道具体工厂的创建产品的过程,甚至不需要知道具体产品的类名

– 缺点

  1. 每增加一个产品时,都需要一个具体类和一个具体创建者,增加体统类的数目增多, 复杂性增加
  2. 对简单工厂,增加功能修改的是工厂类;对工厂方法,增加功能修改的是产品类
UML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
type Operator interface {
SetA(int)
SetB(int)
Result() int
}

type OperatorFactory interface {
Create() Operator
}

type OperatorBase struct {
a, b int
}

//SetA 设置 A
func (o *OperatorBase) SetA(a int) {
o.a = a
}

//SetB 设置 B
func (o *OperatorBase) SetB(b int) {
o.b = b
}
type PlusOperator struct {
*OperatorBase
}


type PlusOperatorFactory struct{}

func (PlusOperatorFactory) Create() Operator {
return &PlusOperator{
OperatorBase: &OperatorBase{},
}
}

func (o PlusOperator) Result() int {
return o.a + o.b
}
type MinusOperator struct {
*OperatorBase
}

type MinusOperatorFactory struct{}

func (MinusOperatorFactory) Create() Operator {
return &MinusOperator{
OperatorBase: &OperatorBase{},
}
}

func (o MinusOperator) Result() int {
return o.a - o.b
}

Powered by Hexo and Hexo-theme-hiker

Copyright © 2018 - 2021 Noonde All Rights Reserved.

UV : | PV :