// 定义接口WeatherStateinterface WeatherState { void showState();}// 实现接口WeatherState的CloudyState类class CloudyState implements WeatherState { public void showState() { System.out.println("天气多云,最高温度28度,最低温度20度。"); }}// 实现接口WeatherState的SunnyState类class SunnyState implements WeatherState { public void showState() { System.out.println("天气晴朗,最高温度32度,最低温度25度。"); }}// 定义Weather类class Weather { private WeatherState state; // 定义WeatherState接口声明的变量state // 定义setState方法,用于设置state的状态 public void setState(WeatherState s) { this.state = s; } // 定义show方法,在该方法中让接口state回调showState()方法 public void show() { state.showState(); }}// 主类Epublic class Main { public static void main(String[] args) { Weather nanchang = new Weather(); nanchang.setState(new CloudyState()); // 设置为多云状态 nanchang.show(); // 输出天气状态 nanchang.setState(new SunnyState()); // 设置为晴朗状态 nanchang.show(); // 输出天气状态 }}在完成题1的基础上,将实现WeatherState接口的CloudyState和SunnyState类改写为匿名类,删掉CloudyState和SunnyState类。 代码可恰当的使用Lambda表达式进行简化
时间: 2024-02-20 07:59:59 浏览: 41
下面是改写后的代码:
```
// 定义接口WeatherState
interface WeatherState {
void showState();
}
// 定义Weather类
class Weather {
private WeatherState state; // 定义WeatherState接口声明的变量state
// 定义setState方法,用于设置state的状态
public void setState(WeatherState s) {
this.state = s;
}
// 定义show方法,在该方法中让接口state回调showState()方法
public void show() {
state.showState();
}
}
// 主类E
public class Main {
public static void main(String[] args) {
Weather nanchang = new Weather();
// 使用匿名类实现CloudyState状态
nanchang.setState(new WeatherState() {
@Override
public void showState() {
System.out.println("天气多云,最高温度28度,最低温度20度。");
}
});
nanchang.show(); // 输出天气状态
// 使用Lambda表达式实现SunnyState状态
nanchang.setState(() -> System.out.println("天气晴朗,最高温度32度,最低温度25度。"));
nanchang.show(); // 输出天气状态
}
}
```