"创建型模式-04 第4章 简单工厂模式"
创建型设计模式是软件设计中的一大类,主要关注对象的创建过程,以提高代码的灵活性、可读性和可维护性。简单工厂模式是创建型模式的一种,它的主要目标是通过一个公共的工厂类来创建对象,客户端只需传递所需对象的类型标识,即可得到相应类型的实例,而无需直接与具体类打交道。
简单工厂模式的动机在于减少耦合。在实际应用中,当系统需要创建一系列相关或相互依赖的对象时,使用简单工厂模式可以避免客户端代码与具体实现类之间的直接耦合。例如,系统需要提供不同形状的按钮,如圆形、矩形和菱形按钮,它们都有一个共同的基类,但各自有不同的外观。在这种情况下,我们可以定义一个工厂类,根据输入的参数(比如按钮类型)动态地返回对应的按钮对象,客户端只需要知道按钮的类型名称,无需了解按钮的具体实现细节。
简单工厂模式的结构通常包括以下角色:
1. **产品接口/基类**(Product):定义了所有可创建对象的公共接口或抽象基类。
2. **具体产品**(Concrete Product):实现了产品接口的具体类,即工厂要创建的对象。
3. **工厂类**(Factory):负责根据输入条件创建具体产品的实例。
模式的操作流程如下:
1. 客户端请求创建一个产品对象,向工厂传递所需的产品类型。
2. 工厂类接收到请求后,根据产品类型决定创建哪个具体产品的实例。
3. 工厂类返回创建好的产品对象给客户端。
简单工厂模式的优点包括:
- 提高代码的封装性和可维护性,客户端只需要知道产品类型,无需关心具体实现。
- 方便添加新产品,只需在工厂类中增加新的创建逻辑即可。
然而,简单工厂模式也存在一些缺点:
- 如果产品种类过多,工厂类会变得庞大且难以维护。
- 当需要新增一个产品类别时,可能需要修改工厂类,违反了开闭原则。
- 工厂类通常包含静态方法,不易于进行单元测试。
除了简单工厂模式,创建型模式还包括工厂方法模式、抽象工厂模式、建造者模式、原型模式和单例模式,它们分别针对不同的场景和需求提供了更复杂的对象创建策略。
简单工厂模式是一种实用的创建型设计模式,它在保持代码简洁的同时,减少了客户端代码对具体实现的依赖,提高了系统的灵活性。但在大型复杂系统中,可能需要结合其他模式以适应更多的变化。