用Java代码模拟实现:旅游出行策略。要求使用配置文件存储具体策略类的类名。在此基础上再增加一种新的旅游出行方式,如徒步旅行 (WalkStrategy)。修改原有类图及代码,注意系统的变化。
时间: 2023-11-28 13:50:37 浏览: 78
根据题目要求,我们可以先设计一个旅游出行策略的接口:
```java
public interface TravelStrategy {
void travel();
}
```
然后设计一个旅游出行策略的管理类,用于根据配置文件加载具体的旅游出行策略类:
```java
import java.util.Properties;
public class TravelStrategyManager {
private static TravelStrategy travelStrategy;
public static void loadStrategy() {
try {
Properties properties = new Properties();
properties.load(TravelStrategyManager.class.getResourceAsStream("strategy.properties"));
String className = properties.getProperty("strategy");
Class<?> clazz = Class.forName(className);
travelStrategy = (TravelStrategy) clazz.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void travel() {
travelStrategy.travel();
}
}
```
这个管理类通过读取 `strategy.properties` 配置文件,获取具体的旅游出行策略类的类名,并通过反射创建实例。然后提供一个 `travel` 方法,用于执行具体的旅游出行策略。
假设现在我们已经有两种旅游出行策略类:骑行旅行和自驾旅行,它们都实现了 `TravelStrategy` 接口:
```java
public class BikeStrategy implements TravelStrategy {
@Override
public void travel() {
System.out.println("骑行旅行");
}
}
public class CarStrategy implements TravelStrategy {
@Override
public void travel() {
System.out.println("自驾旅行");
}
}
```
接下来,我们需要在 `strategy.properties` 中配置具体的旅游出行策略类的类名:
```
strategy=com.example.CarStrategy
```
然后,在主程序中,我们可以这样使用旅游出行策略管理类:
```java
public class Main {
public static void main(String[] args) {
TravelStrategyManager.loadStrategy();
TravelStrategyManager.travel();
}
}
```
这个程序会输出 `自驾旅行`,因为在 `strategy.properties` 中配置的是 `CarStrategy`。
现在,如果我们要新增一种旅游出行方式,比如徒步旅行,只需要创建一个新的旅游出行策略类:
```java
public class WalkStrategy implements TravelStrategy {
@Override
public void travel() {
System.out.println("徒步旅行");
}
}
```
然后在 `strategy.properties` 中配置新的类名:
```
strategy=com.example.WalkStrategy
```
这样,我们就可以使用新的旅游出行策略了。
阅读全文