我最近决定一个服务定位器是一个好的设计模式,可以像我的世界经理那样访问我的游戏的重要经理(可以生成实体并跟踪它们)和声音管理器。但是,我不确定访问服务定位器的最合适方式。我开始将指针传递给我在main中实例化的服务定位器,但这变得乏味,因为我发现所有东西(射弹,玩家,一切!)都需要它的参数。
我在这里问这个问题是因为我不认为它是针对游戏的,但如果我错了,请告诉我。
我是否以错误的方式处理这种模式? 谢谢你的时间。
编辑:单身人士会解决这个问题吗?他们有全球访问点,但我不认为这是最干净的解决方案。有任何想法吗?或者那会是最好的吗?答案 0 :(得分:1)
这种情况下使用全局变量(或单例)可能是合适的。你必须权衡使用全局变量/单例的缺点,以及几乎无处不在传递引用的便利性。如果您认为缺点不太可能影响您的设计/代码,那么使用全局变量可以使您的代码更清晰。
使用全局变量的一些缺点是:
单身人士的其他缺点可能是:
答案 1 :(得分:0)
就个人而言,我赞成在任何地方使用单个上下文对象,而不是使用单例。让上下文对象为您提供函数,为您提供指针/引用或访问所有不同的服务,管理器等。