在某多人联机对战游戏中,多个玩家可以加入同一战队组成联盟,当战队中的某一成员受到敌人攻击时将给所有其他盟友发送通知,盟友收到通知后将做出响应。 现使用观察者模式设计并实现该过程,以实现战队成员之间的联动。
Subject.java
package Game;
import java.util.ArrayList;
public abstract class Subject {
protected String teamName;//战队名字
protected ArrayList <Observer> players=new ArrayList<Observer>();//定义一个观察者集合用于存储所有观察者的对象
public String getTeamName() {
return teamName;
}
public void setTeamName(String teamName) {
this.teamName = teamName;
}
//添加队友
public void join(Observer obs) {
System.err.println(obs.getName()+"加入"+this.teamName+"战队!");
players.add(obs);
}
//注销观察者
public void quit(Observer obs) {
System.err.println(obs.getName()+"退出"+this.teamName+"战队!");
players.remove(obs);
}
//声明抽象通知方法
public abstract void Notify(String name);
}
ConcreteSubject.java