JAVA工厂模式详解:简单工厂实例
需积分: 10 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工厂模式实例展示了如何通过接口和简单工厂模式来组织和创建对象。通过这种方式,我们可以更好地管理和控制对象的创建过程,同时保持代码的灵活性和可读性。
2014-12-22 上传
2009-09-09 上传
2011-07-02 上传
2018-03-08 上传
2019-09-15 上传
2018-05-02 上传
2019-08-09 上传
2024-03-13 上传
2016-12-17 上传
Pa1nk1LLeR
- 粉丝: 62
- 资源: 2万+
最新资源
- 掌握压缩文件管理:2工作.zip文件使用指南
- 易语言动态版置入代码技术解析
- C语言编程实现电脑系统测试工具开发
- Wireshark 64位:全面网络协议分析器,支持Unix和Windows
- QtSingleApplication: 确保单一实例运行的高效库
- 深入了解Go语言的解析器组合器PARC
- Apycula包安装与使用指南
- AkerAutoSetup安装包使用指南
- Arduino Due实现VR耳机的设计与编程
- DependencySwizzler: Xamarin iOS 库实现故事板 UIViewControllers 依赖注入
- Apycula包发布说明与下载指南
- 创建可拖动交互式图表界面的ampersand-touch-charts
- CMake项目入门:创建简单的C++项目
- AksharaJaana-*.*.*.*安装包说明与下载
- Arduino天气时钟项目:源代码及DHT22库文件解析
- MediaPlayer_server:控制媒体播放器的高级服务器