简单工厂模式
   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()
  |