完整解决方案
为了实现对象之间的联动,Sunny软件公司开发人员决定使用观察者模式来进行多人联机对战游戏的设计,其基本结构如图1-4所示:
- 图1-4 多人联机对战游戏结构图
在图1-4中,AllyControlCenter充当目标类,ConcreteAllyControlCenter充当具体目标类,Observer充当抽象观察者,Player充当具体观察者。完整代码如下所示:
1 | import java.util.*; |
编写如下客户端测试代码:
1 | class Client { |
编译并运行程序,输出结果如下:
1 | 金庸群侠战队组建成功! |
在本实例中,实现了两次对象之间的联动,当一个游戏玩家Player对象的beAttacked()方法被调用时,将调用AllyControlCenter的notifyObserver()方法来进行处理,而在notifyObserver()方法中又将调用其他Player对象的help()方法。Player的beAttacked()方法、AllyControlCenter的notifyObserver()方法以及Player的help()方法构成了一个联动触发链,执行顺序如下所示:
Player.beAttacked() –> AllyControlCenter.notifyObserver() –>Player.help()。
参考资料:
LoveLion 对象间的联动——观察者模式(三)