主观观察者关系不是依赖关系:观察者不需要需要主题为了存在,反之亦然。然而,发布者和订阅者的“连接在一起”强烈地让人想起依赖注入。是否有类似于依赖注入的模式将主题和观察者连接在一起?
我的射击游戏大量使用观察者模式。例如:
控制器对象在每轮开始时产生玩家对象。控制器要求工厂提供该船。除其他事项外,该船依赖于可能过热并摧毁船的反应堆物体。工厂注入这些依赖关系。到现在为止还挺好。
现在,HUD需要了解船舶的地位,特别是反应器温度,但HUD不上的DI意义上的船靠:船被摧毁后,HUD仍然存在。
问题是,假设控制器不具备HUD的参考,我怎样才能让HUD与船舶接触?这只是一个小小的例子。我有很多很多需要将事件传递给另一个的对象。
我觉得我可以在工厂做一些接线,但是感觉“错误”,并且在现有订阅需要改变的情况下无助。
无论如何,我所读到的关于观察者模式的一切都忽略了这个更广泛的问题。有一个确定的解决方案吗?
当然,使用Di容器可以使您的应用程序更容易编写有用的对象消息传递系统。这里有一篇文章讨论一些相关的问题(更多的关注于StructureMap的东西,但在消息/消息处理器领域):http://www.lostechies.com/blogs/jimmy_bogard/archive/2010/01/07/先进-structuremap定制登记的约定换部分闭合-types.aspx – Pete 2010-02-02 20:05:58