hooyantsing's Blog

P21 抽象工厂

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

Java设计模式-Mr.high

应用场景

如果业务里出现了固定规格的“套餐”,并且产品簇不会经常发生变化。

抽象工厂

由于工厂方法设计模式在产品种类特别多的情况下,产品类和工厂类过多。通过抽象工厂设计模式来合并工厂,减少工厂类。

如果一个工厂仅生产一种产品叫工厂方法设计模式,一个工厂生产多种产品叫抽象工厂设计模式

优点:

  1. 仍然具有简单工厂和工厂方法的优点。
  2. 工厂数量减少了。
产品簇

套餐里产品的种类。种类增加/减少都将修改所有的工厂。

产品等级

单一产品类型,多种实现。只需要增加新的工厂实现即可。

hooy.xyz

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
package xyz.hooy.woniuxueyuan;

public class ScrewTest {
}
// 产品:螺丝
interface Screw{}
class SixmmScrew implements Screw{}
class EightmmScrew implements Screw{}
// 产品:螺母
interface Nut{}
class SixmmNut implements Nut{}
class EightmmNut implements Nut{}
// 抽象工厂
interface Factory{
Screw getScrew();
Nut getNut();
}
// 6mm工厂
class SixmmFactory implements Factory{
@Override
public Screw getScrew() {
return new SixmmScrew();
}
@Override
public Nut getNut() {
return new SixmmNut();
}
}
// 8mm工厂
class EightmmFactory implements Factory{
@Override
public Screw getScrew() {
return new EightmmScrew();
}
@Override
public Nut getNut() {
return new EightmmNut();
}
}
CATALOG
  1. 1. 应用场景
  2. 2. 抽象工厂
    1. 2.1. 产品簇
    2. 2.2. 产品等级