设计模式 简单工厂模式

本文将介绍设计模式中的简单工厂模式。

一、什么是简单工厂模式?

定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常具有共同的父类。

二、实现

1. 基本角色

简单工厂模式包含以下三个角色:

  • Factory 工厂角色:
    • 简单工厂模式的核心
    • 负责实现创建所有产品实例的内部逻辑
    • 可以被外界直接调用以创建所需的产品对象
  • Product 抽象产品角色:
    • 所有产品的父类
    • 封装了所有产品的公用方法
  • ConcreteProduct 具体产品角色:
    • 简单工厂模式的创建目标

2. 简单示例

Factory:

1
2
3
4
5
6
7
8
9
10
11
public class Factory {
public static Product getProduct(String name) {
Product product = null;
if (name.equalsIgnoreCase("name1")) {
product = ...;
} else if (name.equalsIgnoreCase("name2")) {
product = ...;
}
return product;
}
}

Product:

1
2
3
public abstract class Product {
...
}

ConcreteProduct:

1
2
3
Public class ConcreteProduct extends Product {
···
}

三、优缺点

1. 优点

  • 将对象的创建和使用分离,更符合单一职责原则,更有利于代码复用,更方便于系统维护
  • 使用者无需知道对象的具体创建细节,减轻使用者的记忆负担

2. 缺点

  • 工厂类集中了所有产品的创建逻辑,职责过重
  • 会增加系统中类的数量
  • 一旦添加新产品,便需要对工厂类做修改

四、简单工厂模式的简化

有时候,为了简化简单工厂模式,还可以将抽象产品类和工厂类合并,直接通过调用抽象产品类的静态工厂方法创建对象。

参考

  • 《Java 设计模式》