Я бы не использовал здесь Singleton или статическую переменную, а вместо этого передавал бы экземпляр Player
классам, которые нуждаются в этом через сеттеры. Если вам нужен только один экземпляр игрока - звоните только new Player()
один раз: -)
Смотрите мой взгляд на синглетоны здесь . Краткое резюме: их типичное неправильное использование (избегая «громоздких» сеттеров) нарушает ОО и снижает качество дизайна.
Статические переменные вырезаются из той же ткани, что и Singletons, вместе с Monostate (нестатические геттеры, статические данные, конструктор - «фабрика»). Избежать их. Подумайте, если бы вы сделали все статичным: игрок, карта, камера, враги и т. Д. Вы бы избежали большого количества «громоздких» сеттеров. Но это ОО? Когда вы закончите свою игру, можете ли вы повторно использовать свои алгоритмы поиска пути, AI-алгоритмы и т. Д. В другой игре, или у них слишком много глобальных переменных (Singletons и др.), Специфичных для вашей текущей игры, навсегда сожженных в них?