【问题标题】:Advice on using (or not using) singletons关于使用(或不使用)单例的建议
【发布时间】:2016-11-01 16:54:01
【问题描述】:

我正在开发一款多人游戏 iOS 应用程序,并且我在设计中达到了一个点,我似乎可以从创建两个单例中受益,但我不知道是否有更好的设计模式。

  1. 实时游戏单例:从应用中的任何位置获取/设置属性以及启动/停止游戏。
  2. 位置管理器单例:从应用程序中的任何位置管理用户位置更新/属性,尤其是从实时游戏单例内部,因为游戏机制会影响位置管理器的属性。

如果您想知道我是否真的需要从应用程序中的任何位置与这些对象进行交互,答案是肯定的。这是一种实时多人游戏体验,因此与游戏玩法相关的所有内容都需要在应用的整个生命周期中保持干净。

那么这是对单例模式的正确使用还是有更好的方法,如果有,为什么更好?

【问题讨论】:

  • 您还有哪些选择?
  • 如果你现在使用单例,你会非常抱歉。考虑未来的更新,您需要支持一次跟踪多个现场游戏。
  • “你以后会很抱歉的” - 抱歉,我仍然不明白为什么会这样。有没有比你给出的例子更基本的东西?
  • 单例也会产生内存问题,因为它们总是驻留在内存中并且不会被释放。

标签: ios design-patterns singleton multiplayer


【解决方案1】:

相信你需要看看dependency injection。您应该以某种方式实例化您的对象,在彼此的对象构造时间内传递Game 和LocationManager 实例(即将它们作为构造函数参数传递给任何需要Game 和LocationManager 实例或两者的对象)。

实际上,在游戏初始化期间只会创建一个 Game 和 LocationManager 实例,并且游戏中最顶层的对象将开始注入这两个对象,例如级联!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2013-07-21
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多