2016-11-01 3 views
1

Я работаю над многопользовательской игрой приложения iOS, и я пришел к выводу, что мне кажется, что я выиграю от создания двух синглетов, но я не знаю если есть превосходный дизайн.Советы по использованию (или не использования) синглтонов

  1. Живая игра singleton: получить/установить свойства и начать/остановить игру из любого места приложения.
  2. Менеджер местоположений singleton: для управления обновлениями/свойствами местоположения пользователя из любого места в приложении, но особенно изнутри сингл-игры в реальном времени, поскольку механика игры влияет на свойства менеджера местоположения.

И если вам интересно, мне действительно нужно взаимодействовать с этими объектами абсолютно в любом месте приложения, ответ - это определенное да. Это живой многопользовательский опыт, поэтому все, что связано с геймплеем, должно сохраняться на протяжении всего жизненного цикла приложения.

Так будет ли это правильное использование одноэлементного шаблона или есть лучший метод, и если есть, то почему это лучше?

+0

Какие у вас другие опции? – donlys

+0

Прочитайте http://stackoverflow.com/questions/137975/what-is-so-bad-about-singletons – rmaddy

+0

Вам будет очень жаль, если вы сейчас используете синглтон. Рассмотрите будущее обновление, где вам необходимо поддерживать отслеживание более чем одной живой игры за раз. – rmaddy

ответ

0

Я считаю, что вам нужно взглянуть на dependency injection. Вы должны каким-то образом создать объекты, передающие объекты Game и LocationManager во время каждого другого времени строительства объекта (то есть передать их в качестве аргументов конструктора любому объекту, который должен будет иметь либо один или оба Game и LocationManager экземпляры).

На самом деле, там будет только один экземпляр Game и LocationManager, которые будут созданы во время инициализации игры и самого верхнего объекта в игре начнут впрыснуть как объекты, как каскад!

Смежные вопросы