工厂模式
工厂模式是一种创建型设计模式,它提供了一种将对象的创建与使用分离的方法。在工厂模式中,我们定义一个工厂类,用于创建具有相同接口的不同对象。通过使用工厂类来创建对象,我们可以将对象的创建逻辑从客户端代码中分离出来,从而使客户端代码更加简洁和易于维护。
工厂模式通常有三种实现方式:简单工厂模式、工厂方法模式和抽象工厂模式。
简单工厂模式(Simple Factory Pattern) 简单工厂模式也称为静态工厂模式,它通过一个工厂类来创建不同的产品对象。客户端只需要提供一个参数,即可从工厂类中获取所需的产品对象。简单工厂模式适用于需要创建的对象较少的情况。
工厂方法模式(Factory Method Pattern) 工厂方法模式将工厂类抽象化,不再直接提供创建对象的方法,而是将创建对象的方法放在工厂类的子类中实现。每个子类都可以根据需要创建不同的产品对象,客户端只需要根据具体的情况选择相应的子类即可。工厂方法模式适用于需要创建的对象较多的情况。
抽象工厂模式(Abstract Factory Pattern) 抽象工厂模式是工厂方法模式的扩展,它定义了一个抽象的工厂接口,用于创建一组相互依赖的对象。具体的工厂类实现了抽象工厂接口,并负责创建一组具有相同主题的对象。客户端只需要选择合适的工厂类,就可以创建一组具有相互依赖关系的对象。抽象工厂模式适用于需要创建一组相关对象的情况。
下面是工厂方法模式的 UML 类图:
+-----------------+ +-----------------+
| Product | | Creator |
+-----------------+ +-----------------+
| | | |
| + doSomething() | | + factoryMethod()|
| | | |
+-----------------+ +-----------------+
△ △
| |
+-----------------+ +-----------------+
| ConcreteProduct| | ConcreteCreator |
+-----------------+ +-----------------+
| | | |
| | | + factoryMethod()|
| | | |
+-----------------+ +-----------------+