Java工厂模式解析:简单工厂与工厂方法模式

需积分: 0 10 下载量 159 浏览量 更新于2024-08-18 收藏 639KB PPT 举报
"本文介绍了工厂方法模式和简单工厂模式在Java中的应用,这两种模式都是工厂模式的常见形态。工厂模式主要用于创建具有共同接口的类实例,根据需求动态选择要实例化的类。文章通过实例展示了如何使用这两种模式,并给出了相关代码示例。" 在软件设计模式中,工厂模式是一种创建型模式,它提供了一种创建对象的最佳方式。工厂模式的主要目的是通过将实例化过程封装在工厂类中,使得客户端无须知道具体对象的创建细节,从而降低了系统的耦合度。 1. 简单工厂模式(SimpleFactory Pattern) 简单工厂模式通过一个静态方法来创建对象,这个静态方法可以根据传入的参数或条件来决定创建哪种类型的实例。例如,在上述的水果农场例子中,可以有一个`FruitFactory`类,包含一个静态方法如`createFruit(String fruitType)`,该方法根据`fruitType`返回相应的水果对象(如`Apple`、`Grape`或`Strawberry`)。这种方式方便了客户端的使用,但缺点是静态工厂类很难扩展,如果需要添加新的水果类型,需要修改原有代码。 2. 工厂方法模式(FactoryMethod Pattern) 工厂方法模式则将对象的创建过程延迟到子类中,抽象工厂类定义了创建产品对象的接口,而具体的创建过程由各个子类实现。这样,当需要增加新产品时,无需修改原有代码,只需新增一个子类即可。相比于简单工厂模式,工厂方法模式更加灵活且符合开闭原则,即对扩展开放,对修改关闭。 在水果农场的例子中,可以创建一个抽象的`FruitFactory`类,定义一个`createFruit()`的抽象方法,然后分别为每种水果创建一个具体的工厂类(如`AppleFactory`、`GrapeFactory`),这些子类重写`createFruit()`方法以返回对应的水果实例。这样,添加新水果类型时,只需添加新的工厂类即可,无需改动`FruitFactory`。 3. 抽象工厂模式(AbstractFactory Pattern) 抽象工厂模式更进一步,它不仅创建单个对象,还创建对象族。当需要一组相关的或相互依赖的对象时,抽象工厂模式就显得特别有用。在水果农场的例子中,如果水果还有不同的品种(如红富士苹果、绿葡萄),可以使用抽象工厂模式来创建一系列相关的水果实例。 总结来说,工厂模式提供了对象创建的抽象,降低了系统对具体实现的依赖。简单工厂模式适用于产品种类较少且不易扩展的情况;工厂方法模式则适合需要扩展和保持灵活性的场景;抽象工厂模式用于创建一族相关或相互依赖的对象。在实际开发中,根据项目需求和扩展性考虑选择合适的工厂模式。