第4章:简单工厂模式详解

需积分: 9 0 下载量 68 浏览量 更新于2024-08-18 收藏 3.17MB PPT 举报
"本章教学内容-04 第4章 简单工厂模式" 简单工厂模式是一种创建型设计模式,它的主要目的是提供一个统一的入口,用来创建一系列相关或相互依赖的对象,而无需指定它们的具体类。这种模式通常用于简化客户端代码,使其无需直接实例化对象,而是通过一个公共的工厂类来进行实例化。 **创建型模式概述** 创建型模式关注的是对象的创建,它们的主要目标是将对象的创建和使用分离,以提高系统的灵活性和可维护性。这使得系统设计更加符合单一职责原则,因为客户端代码只需关注对象的使用,而无需关心对象是如何被创建的。这种分离也使得对象的创建可以独立于使用它们的客户端,从而允许在不修改现有代码的情况下,添加新的对象类型。 **简单工厂模式** 简单工厂模式的核心在于一个工厂类,它根据传入的参数来决定创建哪个具体类的实例。模式的动机在于简化客户端代码,使其只需要传递必要的参数,工厂类会处理具体的实例化过程。例如,假设我们有一个系统需要创建不同形状的按钮,如圆形、矩形和菱形,所有按钮都继承自一个基类。简单工厂模式可以使客户端仅需提供形状类型,工厂类就负责创建对应的按钮对象。 **模式动机与定义** 模式的动机是减少客户端与具体产品类之间的耦合。客户端不再需要知道产品类的实现细节,只需要知道一个参数(如按钮的形状),然后通过工厂类来获取所需对象。模式的定义是:有一个工厂类,它根据输入的参数决定创建哪种具体的产品实例。 **模式结构与分析** 简单工厂模式通常包含以下角色: 1. **产品接口/抽象类**:定义了所有创建对象的公共接口,所有具体产品类都应继承自这个接口或抽象类。 2. **具体产品类**:实现了产品接口或抽象类,是工厂方法要创建的实体。 3. **工厂类**:包含一个根据参数创建具体产品对象的方法。这个方法通常是静态的,因此不需要实例化工厂类即可调用。 **模式实例与解析** 以创建按钮为例,我们可以定义一个`Button`抽象类或接口,然后有`CircleButton`、`RectangleButton`和`DiamondButton`等具体产品类。工厂类`ButtonFactory`有一个静态方法`createButton(String shapeType)`,根据传入的形状类型返回相应形状的按钮对象。 **模式效果与应用** 简单工厂模式使得系统更易于扩展,因为添加新产品只需要修改工厂类,而不需要修改使用产品的客户端代码。然而,它也有一些限制,比如当产品种类增加时,工厂类可能会变得过于复杂,违反了开闭原则。此外,如果需要改变产品创建的逻辑,可能需要修改工厂类的代码。 **模式扩展** 除了简单工厂模式,还有其他几种创建型模式,如工厂方法模式、抽象工厂模式、建造者模式、原型模式和单例模式,它们各自适用于不同的场景,提供不同程度的灵活性和控制力。 总结来说,简单工厂模式是创建型模式的一种,它提供了一个创建对象的中心控制点,减少了客户端代码的复杂性,但同时也可能增加对工厂类的维护难度。在选择使用简单工厂模式时,需要权衡这些利弊,以适应特定的系统需求。