【发布时间】:2011-10-25 03:44:13
【问题描述】:
所以我的游戏中有一个玩家类。逻辑上只需要一个播放器对象(单个播放器)但是许多不同的类需要访问播放器对象。 (即,地图需要知道玩家是谁,相机和敌人需要与玩家互动,等等)。
我有几个选择。
我可以将此播放器对象传递给所有需要它的东西,这很麻烦。 (依赖注入我觉得叫)
只需将其设为公开静态即可。
使其成为单例。
各有什么优缺点?
【问题讨论】:
-
请参阅this question 以获得一些可能的指导。
-
单例几乎永远不是答案。如果您想稍后制作多人游戏怎么办?你把自己画到了角落里。
-
@MattBall,我不太同意。 Singleton 毕竟是一个工厂,它可以很容易地增强以支持
getIntance()中的 arg,比如 player-id。 -
所有事情都不需要 DI。并非每个人都将 DI 用于所有事情。这不是很酷的帮助。
-
单身是新的黑色:)