【工厂方法模式是什么】工厂方法模式是一种常见的创建型设计模式,它通过定义一个创建对象的接口,但让子类决定实例化哪一个类。这种模式将对象的创建与使用分离,提高了系统的灵活性和可扩展性。
一、工厂方法模式概述
工厂方法模式的核心思想是:定义一个用于创建对象的接口,但让子类决定实例化哪一个类。该模式通过将对象的创建过程封装在子类中,使得系统可以在不修改已有代码的情况下引入新的产品类。
二、工厂方法模式的主要角色
| 角色名称 | 作用说明 |
| 抽象工厂(Creator) | 定义了一个创建对象的接口,通常是一个抽象方法,用于返回产品对象。 |
| 具体工厂(Concrete Creator) | 实现抽象工厂的接口,负责实例化具体的产品类。 |
| 抽象产品(Product) | 定义了产品的公共接口,所有具体产品都必须实现这个接口。 |
| 具体产品(Concrete Product) | 实际被创建的对象,由具体工厂负责实例化。 |
三、工厂方法模式的优点
| 优点 | 说明 |
| 解耦对象创建与使用 | 客户端无需知道具体产品类,只需调用工厂方法即可。 |
| 提高系统的可扩展性 | 新增产品时,只需增加具体产品类和对应的具体工厂类,无需修改原有代码。 |
| 符合开闭原则 | 对扩展开放,对修改关闭,符合面向对象设计的基本原则。 |
四、工厂方法模式的缺点
| 缺点 | 说明 |
| 增加系统复杂度 | 每新增一个产品类,都需要新增一个具体工厂类,导致类数量增加。 |
| 代码冗余 | 如果产品种类较多,可能会出现大量重复的工厂类代码。 |
五、工厂方法模式的应用场景
| 场景描述 | 适用情况 |
| 需要根据不同的条件创建不同对象 | 如根据不同用户类型创建不同的用户界面或服务实例。 |
| 系统需要支持未来可能的扩展 | 当系统未来可能增加新类型的产品时,使用工厂方法更灵活。 |
| 避免客户端直接依赖具体类 | 通过工厂间接创建对象,降低耦合度。 |
六、总结
工厂方法模式是一种通过定义接口来创建对象的设计模式,它将对象的创建过程封装在子类中,从而实现对象的解耦与灵活扩展。虽然它增加了系统的复杂度,但在需要动态创建对象或未来可能扩展的场景下,具有明显的优势。合理使用工厂方法模式,可以提升代码的可维护性和可读性。


