(2)某在线游戏支持多人联机对战,每个玩家都可以加入某一战队组成联盟,当战队中某一成员受到敌人攻击时将给所有盟友发送通知,盟友收到通知后将作出响应。使用观察者模式设计并实现该过程。设计模式java
时间: 2024-06-16 22:04:15 浏览: 165
在Java中,可以使用观察者模式来设计并实现该过程。观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。
下面是使用观察者模式设计并实现该过程的步骤:
1. 定义主题接口(Subject):主题接口定义了添加、删除和通知观察者的方法。
```java
public interface Subject {
void addObserver(Observer observer);
void removeObserver(Observer observer);
void notifyObservers(String message);
}
```
2. 实现主题类(Game):主题类维护一个观察者列表,并实现主题接口的方法。
```java
import java.util.ArrayList;
import java.util.List;
public class Game implements Subject {
private List<Observer> observers = new ArrayList<>();
@Override
public void addObserver(Observer observer) {
observers.add(observer);
}
@Override
public void removeObserver(Observer observer) {
observers.remove(observer);
}
@Override
public void notifyObservers(String message) {
for (Observer observer : observers) {
observer.update(message);
}
}
// 游戏受到攻击时调用该方法通知所有观察者
public void attack(String message) {
notifyObservers(message);
}
}
```
3. 定义观察者接口(Observer):观察者接口定义了接收通知并作出响应的方法。
```java
public interface Observer {
void update(String message);
}
```
4. 实现观察者类(Player):观察者类实现了观察者接口的方法,并在收到通知时作出响应。
```java
public class Player implements Observer {
private String name;
public Player(String name) {
this.name = name;
}
@Override
public void update(String message) {
System.out.println(name + " received notification: " + message);
// 做出响应的逻辑
}
}
```
使用观察者模式的示例代码如下:
```java
public class Main {
public static void main(String[] args) {
Game game = new Game();
Player player1 = new Player("Player1");
Player player2 = new Player("Player2");
Player player3 = new Player("Player3");
game.addObserver(player1);
game.addObserver(player2);
game.addObserver(player3);
game.attack("Enemy attack!");
game.removeObserver(player2);
game.attack("Another enemy attack!");
}
}
```
以上就是使用观察者模式设计并实现该过程的示例代码。
阅读全文