JAVA工厂模式详解:简单工厂实例

需积分: 10 17 下载量 146 浏览量 更新于2024-08-18 收藏 639KB PPT 举报
"该资源是一个关于JAVA工厂模式的实例教程,通过一个农场销售不同水果的例子,解释了简单工厂模式的概念和应用。" 在软件设计模式中,工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在这个实例中,我们将深入探讨JAVA中的简单工厂模式,以及如何通过这种模式来实例化不同的水果类。 首先,简单工厂模式是工厂模式的一种,它通过一个静态方法来创建对象,这个静态方法负责根据输入条件或参数来决定具体创建哪个类的实例。这种方式可以隐藏对象创建的复杂性,并且使得客户端代码与具体实现解耦。 在描述的农场公司例子中,我们有三种不同的水果:葡萄(Grape)、草莓(Strawberry)和苹果(Apple),它们都具有共同的行为,例如生长(grow)、收获(harvest)和种植(plant)。为了将这些水果统一管理,我们可以定义一个接口`Fruit`,让所有的水果类实现这个接口,如代码清单1所示: ```java public interface Fruit { void grow(); void harvest(); void plant(); } ``` 接着,我们为每种水果创建一个实现`Fruit`接口的类,如`Apple`(代码清单2)和`Grape`(未完全展示)。每个类会实现接口中的方法,定义各自的行为。 ```java public class Apple implements Fruit { // ... public void grow() { log("Apple is growing"); } public void harvest() { log("Apple has been harvested."); } public void plant() { log("Apple has been planted."); } // ... } ``` 为了能够根据需求动态地创建水果对象,我们可以创建一个工厂类,比如`FruitFactory`,这个类包含一个静态方法,可以根据输入参数返回对应的水果实例。例如: ```java public class FruitFactory { public static Fruit createFruit(String type) { if ("Apple".equalsIgnoreCase(type)) { return new Apple(); } else if ("Grape".equalsIgnoreCase(type)) { return new Grape(); } else if ("Strawberry".equalsIgnoreCase(type)) { return new Strawberry(); } else { throw new IllegalArgumentException("Invalid fruit type"); } } } ``` 这样,客户端代码就可以通过调用`FruitFactory.createFruit()`方法来获取所需的水果对象,而无需关心具体的实现细节。这种设计提高了代码的可扩展性和可维护性,如果将来需要添加新的水果类型,只需要在工厂类中添加相应的判断和实例化代码即可。 总结起来,这个JAVA工厂模式实例展示了如何通过接口和简单工厂模式来组织和创建对象。通过这种方式,我们可以更好地管理和控制对象的创建过程,同时保持代码的灵活性和可读性。