实验五工厂方法模式1电商的物流系统可以陆地运输,也可以海上运输,陆地运输使用卡车运输货物,海上运输使用轮船运输货物,使用工厂方法模式实现此需求
时间: 2024-10-27 14:04:21 浏览: 12
实验五中的工厂方法模式可以帮助我们解决电商物流系统的运输方式问题。在这种模式下,我们创建一个抽象的“运输工厂”类,它定义了一个生产“运输工具”的接口。然后,分别创建两个具体的工厂类,如“卡车运输工厂”和“轮船运输工厂”,每个工厂都负责生产对应类型的运输工具。
例如:
```java
// 抽象运输工具接口
public interface Transportation {
void deliver(Goods goods);
}
// 卡车运输类
public class TruckTransport implements Transportation {
@Override
public void deliver(Goods goods) {
System.out.println("使用卡车运输");
}
}
// 轮船运输类
public class ShipTransport implements Transportation {
@Override
public void deliver(Goods goods) {
System.out.println("使用轮船运输");
}
}
// 运输工厂抽象类
public abstract class LogisticsFactory {
public abstract Transportation createTransportation();
}
// 卡车运输工厂
public class TruckLogisticsFactory extends LogisticsFactory {
@Override
public Transportation createTransportation() {
return new TruckTransport();
}
}
// 轮船运输工厂
public class ShipLogisticsFactory extends LogisticsFactory {
@Override
public Transportation createTransportation() {
return new ShipTransport();
}
}
// 主程序中使用工厂方法
public class Main {
public static void main(String[] args) {
LogisticsFactory factory = getFactory("truck"); // 获取卡车工厂
Transportation transport = factory.createTransportation();
transport.deliver(new Goods()); // 使用卡车运输
factory = getFactory("ship"); // 获取轮船工厂
transport = factory.createTransportation();
transport.deliver(new Goods()); // 使用轮船运输
}
private static LogisticsFactory getFactory(String type) {
if (type.equals("truck")) {
return new TruckLogisticsFactory();
} else if (type.equals("ship")) {
return new ShipLogisticsFactory();
} else {
throw new IllegalArgumentException("Invalid transportation type");
}
}
}
```
阅读全文