果园种植了苹果桃子,根据水果名称选择购买不同水果,使用简单工厂实现3种水果的生产,并合并工厂类和抽象产品类
时间: 2024-10-10 14:10:31 浏览: 27
该文件夹包含20705张具有已知标签和分类的不同收获水果的图像,每张图像的大小为270*180像素
果园种植了苹果和桃子这两种水果,我们可以采用简单的工厂模式来管理它们的生产和销售。首先,我们创建一个抽象的水果产品类(Fruit),它定义了一些通用的属性和方法:
```java
// 抽象产品类(Apple和Peach都是其子类)
public abstract class Fruit {
private String name;
public Fruit(String name) {
this.name = name;
}
// 公共方法,如获取名称
public String getName() {
return name;
}
// 每种水果可能有不同的特性或方法,这里仅做示例
public abstract void grow();
}
```
接着,我们为苹果(Apple)和桃子(Peach)分别创建具体的工厂类(AppleFactory和PeachFactory):
```java
// 苹果工厂
public class AppleFactory implements FruitFactory {
@Override
public Fruit createFruit(String fruitType) {
if (fruitType.equals("apple")) {
return new Apple("红富士");
} else {
throw new IllegalArgumentException("Invalid fruit type for apple factory.");
}
}
// 桃子工厂
public class PeachFactory implements FruitFactory {
@Override
public Fruit createFruit(String fruitType) {
if (fruitType.equals("peach")) {
return new Peach("水蜜桃");
} else {
throw new IllegalArgumentException("Invalid fruit type for peach factory.");
}
}
}
```
这里,`FruitFactory`是一个接口,包含了`createFruit`方法,用于根据传入的水果类型创建对应的水果实例:
```java
// 工厂接口
public interface FruitFactory {
Fruit createFruit(String fruitType);
}
```
这样,当需要购买水果时,通过工厂实例化并调用相应的`createFruit`方法,即可得到所需的具体水果对象:
```java
public class Main {
public static void main(String[] args) {
FruitFactory appleFactory = new AppleFactory();
FruitFactory peachFactory = new PeachFactory();
Fruit apple = appleFactory.createFruit("apple"); // 创建红富士苹果
apple.grow(); // 调用生长方法
Fruit peach = peachFactory.createFruit("peach"); // 创建水蜜桃
peach.grow(); // 调用生长方法
}
}
```
阅读全文