一个类能否同时实现观察器设计模式的主题部分和观察者部分



我正在为 java 设计一个敌人的框架并与观察者一起工作。我想知道是否有可能 |值得努力让一个类在 Java 中同时实现观察者和主题吗?

我想要一个同时实现主体和观察者的敌人界面,以便彼此一定距离内的敌人可以在看到玩家或敌人时互相提醒。

这里有更好的模式吗?

我认为其中一个比观察者模式更合适,这取决于您希望如何实现框架:

  • 隐式调用
  • 事件驱动
  • 发布-订阅

主体/观察者的问题在于,当您的敌人进入/离开彼此的范围时,它们涉及注册/取消注册。

我建议隐式调用或事件驱动,如下所示:

  • 每当敌人看到玩家时,生成一个"事件",该事件将广播给所有其他敌人。
  • 此事件将具有一个坐标来指定其广播位置。
  • 对于每个接收事件的敌人(即所有敌人),查看坐标,看看它是否在自己的某个范围内
    • 如果没有,请忽略它(并假装它从未听到过)
    • 如果是这样,请根据需要执行某些操作。

最新更新