简单工厂模式
304 words
One minute
又叫静态方法模式(因为工厂类定义了一个静态方法)
- 特点:
- 优点:
- 将创建实例与使用实例分开,使用者不必关心类对象如何创建,实现了解耦
- 缺点:
Golang 实现
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
| package simple_factory
import "fmt"
// 抽象
type AbstractProduct interface {
Show()
}
// 实现
type ProductA struct{}
func (p ProductA) Show() {
fmt.Println("ProductA Show")
}
type ProductB struct{}
func (p ProductB) Show() {
fmt.Println("ProductB Show")
}
// 逻辑
type Factory struct{}
func (f *Factory) CreateProduct(productType string) AbstractProduct {
var product AbstractProduct
switch productType {
case "ProductA":
product = &ProductA{}
case "ProductB":
product = &ProductB{}
}
return product
}
/*
* new(Factory).CreateProduct("ProductA")
*/
|
TypeScript 实现
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
| abstract class Product {
abstract useFunction(): void
}
class ProductA extends Product {
useFunction() {
console.log(`ProductA useFunction`)
}
}
class ProductB extends Product {
useFunction() {
console.log(`ProductB useFunction`)
}
}
class SimpleFactory {
public static createProduct(product: string) {
switch (product) {
case "A": return new ProductA();
case "B": return new ProductB();
}
}
}
const pro: Product = SimpleFactory.createProduct('A')
pro.useFunction()
|