根据给定的 UNLL图使用工厂方法模式编写相应的 Java 代码。 农场生产各种水果,有橙子(Orange)和香蕉(Banana);农场的园丁(EruitGardener)根据客户的需求,提供相应的水果,根据给出的UNL 图写出其程序代码。
时间: 2024-11-05 20:24:23 浏览: 24
在Java中,我们可以使用工厂方法模式来创建果园(FruitFarm)的实例,并根据需求(由客户请求的水果类型)动态地选择生成特定的水果对象(如橙子或香蕉)。以下是根据UNL图设计的一个简单示例:
首先,我们需要定义一个接口`IFruit`,它代表所有的水果:
```java
// IFruit接口
public interface IFruit {
void grow();
}
```
然后,为具体的水果类实现这个接口:
```java
// 橙子类 - Orange
public class Orange implements IFruit {
@Override
public void grow() {
System.out.println("橙子正在生长...");
}
}
// 香蕉类 - Banana
public class Banana implements IFruit {
@Override
public void grow() {
System.out.println("香蕉正在生长...");
}
}
```
接着,我们创建一个工厂类`FruitFactory`,它包含一个私有的静态方法数组,用于根据请求返回对应的水果实例:
```java
// FruitFactory类
public class FruitFactory {
private static final IFruit[] fruits = {new Orange(), new Banana()};
// 使用工厂方法
public static IFruit getFruit(String fruitType) {
for (IFruit fruit : fruits) {
if (fruit.getClass().getSimpleName().equals(fruitType)) {
return fruit;
}
}
throw new IllegalArgumentException("无法找到指定类型的水果");
}
}
```
最后,在`EruitGardener`类中,园丁根据客户需求获取并种植水果:
```java
// EruitGardener类
public class EruitGardener {
public void plantFruit(IFruit requestedFruit) {
requestedFruit.grow();
}
public static void main(String[] args) {
EruitGardener gardener = new EruitGardener();
// 客户请求
String customerRequest = "Orange"; // 或者是 "Banana"
IFruit selectedFruit = FruitFactory.getFruit(customerRequest);
gardener.plantFruit(selectedFruit);
}
}
```
阅读全文