简单工厂模式(Simple Factory Pattern)
工厂方法模式(Factory Method Pattern)
抽象工厂模式(Abstract Factory Pattern)
它们是三种与对象创建相关的设计模式,都属于创建型模式,用于将对象的创建过程与使用过程分离,以提高代码的可维护性和灵活性。下面对这三个模式进行讲解:
1. 简单工厂模式
(Simple Factory Pattern)
概念
简单工厂模式由一个工厂类负责创建对象,根据参数决定要创建的具体类的实例。虽然它不是23种经典设计模式之一,但在实践中非常常用。
特点工厂类:一个工厂类包含一个静态方法,根据传入的参数来决定创建哪种具体产品对象。客户端:客户端只需要知道要创建的对象类型的参数,而不需要关心具体的创建过程。
示例
优点客户端代码简单,只需要知道产品的类型参数。工厂类封装了对象创建的逻辑,客户端与具体产品的创建过程解耦。
缺点当增加新的产品时,需要修改工厂类,违背了开闭原则。工厂类可能会变得过于复杂,难以维护。
2. 工厂方法模式
(Factory Method Pattern)
概念
工厂方法模式通过定义一个创建对象的接口,由子类决定实例化哪一个类。工厂方法将对象的创建延迟到子类。
特点工厂接口或抽象类:定义一个创建产品对象的接口或抽象方法。具体工厂类:子类实现具体的产品创建逻辑。客户端:通过调用工厂方法获取产品对象,客户端不直接依赖具体产品类。
示例
优点遵循开闭原则,增加新产品时只需要增加新的具体工厂类,不需要修改现有代码。客户端通过工厂接口进行创建,依赖抽象而不依赖具体类,增强了代码的灵活性。
缺点可能会导致类的数量增多,增加系统的复杂性。
3. 抽象工厂模式
(Abstract Factory Pattern)
概念
抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。它是一种在多个产品等级结构中扩展的工厂方法模式。
特点抽象工厂接口:定义多个创建不同产品类型的方法。具体工厂类:每个具体工厂类负责创建一组相关的产品。抽象产品接口:定义产品的公共接口,每个产品等级结构都要实现这个接口。
示例
优点易于交换产品系列:客户端可以无缝切换到另一个产品系列,因为客户端是面向抽象的。保证产品的一致性:抽象工厂会确保同一系列的产品一起使用,避免出现产品不兼容的情况。
缺点增加新产品系列时,所有相关的工厂类都需要修改,违反了开闭原则。
总结简单工厂模式:通过一个工厂类来决定创建哪种产品,适用于产品类型较少的简单场景。工厂方法模式:通过创建工厂接口和具体工厂类,适用于有多个产品类型的场景,并且易于扩展新的产品类型。抽象工厂模式:通过一个工厂接口创建一系列相关的产品,适用于需要生成一系列相关产品的场景,保证产品族的完整性和一致性。
发表评论