hooyantsing's Blog

P15 工厂方法设计模式

字数统计: 306阅读时长: 1 min
2020/11/08

Java设计模式-Mr.high

应用场景

一个产品对应一种工厂。

工厂方法

优点:

  1. 仍然具有简单工厂的特点,修改工厂内的产品不会影响上层的使用。
  2. 当需要扩展新的产品时,不需要修改原来的代码,扩展一个新的工厂就可以了。

缺点:

  1. 如果有多个产品等级,那么工厂类的数量就会爆炸式的增长。
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
package xyz.hooy.woniuxueyuan;

// 抽象产品
interface Food {
void eat();
}

// 具体产品
class Noodle implements Food{
@Override
public void eat() {
System.out.println("面条");
}
}
class Rice implements Food{
@Override
public void eat() {
System.out.println("米饭");
}
}

// 抽象工厂
interface Factory {
Food getFood();
}
// 具体工厂
class NoodleFactory implements Factory{
@Override
public Food getFood() {
return new Noodle();
}
}
class RiceFactory implements Factory{
@Override
public Food getFood() {
return new Rice();
}
}

// ==========================================
// 客户端
public class AppTest {
public static void main(String[] args) {
Factory factory = new NoodleFactory();
Food food = factory.getFood();
food.eat();
}
}

相较于简单工厂模式,工厂已经解耦,可以随意增加新的产品和工厂。

比如新增

1
2
3
4
5
6
7
8
9
10
11
12
class Fish implements Food{
@Override
public void eat() {
System.out.println("鱼肉");
}
}
class FishFactory implements Factory{
@Override
public Food getFood() {
return new Fish();
}
}
CATALOG
  1. 1. 应用场景
  2. 2. 工厂方法