简单工厂模式:创建IFruit实例

需积分: 9 2 下载量 107 浏览量 更新于2024-09-18 收藏 30KB PPT 举报
"本文主要介绍了简单工厂模式,包括其核心概念、角色以及如何在实际代码中应用。简单工厂模式是一种创建型设计模式,用于创建对象并由一个工厂类负责实例化过程,根据输入参数的不同返回不同类的实例。" 简单工厂模式是一种常见的设计模式,它在软件开发中用于封装对象的创建过程。该模式通过一个中心化的工厂类来生成对象,使得客户端代码无需关心具体的对象实例化细节,只需传递必要的参数给工厂,即可获取所需的产品对象。 **意图** 简单工厂模式的主要目的是提供一个统一的入口,使得客户端能够通过工厂类动态地创建符合需求的实例,而不需要了解这些实例的具体类。这种模式尤其适用于那些实例化过程复杂或者需要根据条件判断来选择创建哪种类型对象的情况。 **角色** 1. **工厂角色**: 这是简单工厂模式的核心,负责实现所有实例的创建逻辑。在示例代码中,`Factory` 类就是工厂角色,它包含一个静态方法 `Create`,根据输入的字符串 `type` 创建相应的 `IFruit` 对象。 2. **抽象产品角色**: 抽象产品是所有创建对象的公共父类或接口,定义了这些对象的公共行为。在示例中,`IFruit` 接口扮演抽象产品角色,定义了 `disp` 方法。 3. **具体产品角色**: 具体产品是工厂模式的目标,它们实现了抽象产品的接口或继承了抽象产品类。在例子中,`苹果`、`橘子` 和 `葡萄` 类是具体产品,实现了 `IFruit` 接口,提供了 `disp` 方法的具体实现。 **工作流程** - 客户端代码首先需要一个水果对象,但并不直接创建,而是调用工厂类的 `Create` 静态方法。 - 工厂类根据传入的字符串参数 `type`,通过 `switch` 语句判断创建哪个具体产品的实例。 - 工厂类返回一个实现了 `IFruit` 接口的对象,客户端可以调用 `disp` 方法来展示水果的名称。 **优缺点** - **优点**: 简化客户端代码,隐藏了对象创建的复杂性,增加了系统的可扩展性,如果需要添加新的产品,只需要增加新的具体产品类和相应的 `switch` 语句即可。 - **缺点**: 工厂类的责任过重,如果产品种类过多,`switch` 语句会变得复杂,违反了开闭原则(对扩展开放,对修改关闭)。此外,工厂类与具体产品之间的耦合度较高。 **适用场景** - 当系统中存在多个具有共同接口的类,且客户端需要根据特定条件创建其中某一个类的实例时。 - 当类的实例化过程较为复杂,或者需要根据外部条件动态选择创建的类时。 简单工厂模式提供了一种将对象创建过程封装起来的方法,使得代码更加模块化和易于维护。然而,对于需要高度灵活性和扩展性的系统,可能需要考虑使用更复杂的工厂模式,如工厂方法模式或抽象工厂模式。