1. 工厂模式(Factory Pattern)
定义: 工厂模式是一种定义一个接口,用于创建对象,但让子类决定实例化哪一个类的模式。工厂模式可以分为两种主要类型:
- 简单工厂模式(也称为静态工厂方法)
- 工厂方法模式
工厂方法模式的关键在于通过创建一个工厂接口(或抽象类)来定义一个创建对象的抽象方法,并由具体的子类实现这个方法来创建具体的对象。这样,客户端代码只依赖于工厂接口,而不是具体的类。
2. 简单工厂模式(Simple Factory Pattern)
定义: 简单工厂模式(或称为静态工厂方法模式)是一种创建对象的模式,它通过一个工厂类来决定创建哪一种产品类的实例。它通过一个静态方法来根据参数决定实例化哪个具体的类。这个模式并不符合“开闭原则”,因为添加新产品可能需要修改工厂类的代码。
3. 抽象工厂模式(Abstract Factory Pattern)
定义: 抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式通常包含一个抽象工厂接口和多个具体工厂,它们实现该接口来创建不同系列的对象。
总结区别
-
简单工厂模式:
- 目的:通过一个工厂类创建对象。
- 实现:工厂类内部的逻辑决定创建哪种具体的产品对象。
- 缺点:不符合开闭原则,添加新产品时需要修改工厂类。
-
工厂方法模式:
- 目的:通过多个具体工厂类来创建产品,每个工厂类负责创建一种产品。
- 实现:工厂方法定义在工厂接口中,具体工厂实现该方法来创建产品。
- 优点:符合开闭原则,可以通过添加新的具体工厂来扩展产品。
-
抽象工厂模式:
- 目的:创建一系列相关的产品对象,通常涉及多个产品系列。
- 实现:包含多个产品接口和一个抽象工厂接口,具体工厂类负责创建一系列产品。
- 优点:可以同时创建一系列相关联的产品,扩展产品系列时无需修改现有代码。
这三种工厂模式各有优缺点,选择哪一种模式通常取决于具体的应用场景和需求。