avatar

目录
抽象工厂模式

个人博客

http://www.milovetingting.cn

抽象工厂模式

模式介绍

抽象工厂模式,也是创建型设计模式之一。

模式的定义

为创建一组相关或者相互依赖的对象提供一个接口,而不需要指定它们的具体类。

使用场景

一个对象族有相同的约束时可以使用抽象工厂模式。如,Android,ios都有短信软件和拨号软件,两者都属于软件的范畴,但它们所在的操作系统平台不一样,这时可以使用抽象工厂模式来实现。

简单实现

抽象产品类

java
1
2
3
4
5
6
7
8
9
10
11
public abstract class AbstractProductA {

public abstract void method();

}

public abstract class AbstractProductB {

public abstract void method();

}

抽象工厂类

java
1
2
3
4
5
6
7
public abstract class AbstractFactory {

public abstract AbstractProductA createProductA();

public abstract AbstractProductB createProductB();

}

具体产品类

java
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
public class ProductA1 extends AbstractProductA{

@Override
public void method() {

}

}

public class ProductA2 extends AbstractProductA{

@Override
public void method() {

}

}

public class ProductB1 extends AbstractProductB{

@Override
public void method() {

}

}

public class ProductB2 extends AbstractProductB {

@Override
public void method() {

}

}

具体工厂类

java
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
public class Factory1 extends AbstractFactory{

@Override
public AbstractProductA createProductA() {
return new ProductA1();
}

@Override
public AbstractProductB createProductB() {
return new ProductB1();
}

}

public class Factory2 extends AbstractFactory {

@Override
public AbstractProductA createProductA() {
return new ProductA2();
}

@Override
public AbstractProductB createProductB() {
return new ProductB2();
}

}

小结

抽象工厂模式优点:

分离接口与实现

抽象工厂模式缺点:

一是类文件的爆炸性增加,二是不太容易扩展新的产品类,因为每增加一个产品类就需要修改抽象工厂。

文章作者: milovetingting
文章链接: http://www.milovetingting.cn/2020/01/15/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/%E6%8A%BD%E8%B1%A1%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8F/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 milovetingting

评论