我正在为 java 设计一个敌人的框架并与观察者一起工作。我想知道是否有可能 |值得努力让一个类在 Java 中同时实现观察者和主题吗?
我想要一个同时实现主体和观察者的敌人界面,以便彼此一定距离内的敌人可以在看到玩家或敌人时互相提醒。
这里有更好的模式吗?
我认为其中一个比观察者模式更合适,这取决于您希望如何实现框架:
- 隐式调用
- 事件驱动
- 发布-订阅
主体/观察者的问题在于,当您的敌人进入/离开彼此的范围时,它们涉及注册/取消注册。
我建议隐式调用或事件驱动,如下所示:
- 每当敌人看到玩家时,生成一个"事件",该事件将广播给所有其他敌人。
- 此事件将具有一个坐标来指定其广播位置。
- 对于每个接收事件的敌人(即所有敌人),查看坐标,看看它是否在自己的某个范围内
- 如果没有,请忽略它(并假装它从未听到过)
- 如果是这样,请根据需要执行某些操作。