(1)编写DogState接口,接口中有showState方法。(2分) (2)编写若干个实现DogState接口的类,负责刻画小狗的各种状态。meetEnemyState(狂叫)、meetFriendState(晃动尾巴)、meetAnotherDog(嬉戏)、SoftlyState(听主人命令)。 (3)编写Dog类,有DogState定义的属性state,有show方法,在该方法中回调showState方法。 (4)编写测试类,测试小狗的各种状态。
时间: 2024-03-17 09:46:13 浏览: 165
以下是问题的回答:
(1) 编写DogState接口,接口中有showState方法。
```java
public interface DogState {
void showState();
}
```
(2) 编写若干个实现DogState接口的类,负责刻画小狗的各种状态。meetEnemyState(狂叫)、meetFriendState(晃动尾巴)、meetAnotherDog(嬉戏)、SoftlyState(听主人命令)。
```java
public class MeetEnemyState implements DogState {
public void showState() {
System.out.println("小狗正在狂叫,因为遇到了敌人!");
}
}
public class MeetFriendState implements DogState {
public void showState() {
System.out.println("小狗正在晃动尾巴,因为遇到了朋友!");
}
}
public class MeetAnotherDog implements DogState {
public void showState() {
System.out.println("小狗正在嬉戏,因为遇到了另一只狗!");
}
}
public class SoftlyState implements DogState {
public void showState() {
System.out.println("小狗正在听主人的命令,非常温顺!");
}
}
```
(3) 编写Dog类,有DogState定义的属性state,有show方法,在该方法中回调showState方法。
```java
public class Dog {
private DogState state;
public void setState(DogState state) {
this.state = state;
}
public void show() {
state.showState();
}
}
```
(4) 编写测试类,测试小狗的各种状态。
```java
public class Test {
public static void main(String[] args) {
Dog dog = new Dog();
dog.setState(new MeetEnemyState());
dog.show();
dog.setState(new MeetFriendState());
dog.show();
dog.setState(new MeetAnotherDog());
dog.show();
dog.setState(new SoftlyState());
dog.show();
}
}
```
运行测试类后,会依次输出小狗的不同状态。
阅读全文