Фон
Я работаю над игрой для iOS в Swift, в которой есть обновления тем в реальном времени. Это в основном означает, что SKSpriteObjects меняют свой цвет при изменении темы. Когда я его реализую, я хотел бы сделать это так, чтобы это было хорошей практикой ООП и подходило для масштабируемости (много объектов делают это одновременно). У меня есть две идеи для этого:
Метод первый: уведомитель / наблюдатель + синглтон
-Зарегистрируйте все обновляемые SKSpriteObjects в качестве наблюдателей для ключа updateTheme. -Создайте синглтон с именем GameState с текущими цветами темы. -Когда запускается уведомление «updateTheme», каждый из наблюдателей будет обращаться к синглтону для своих новых цветов.
Метод второй: уведомитель / наблюдатель + переданный объект
-Зарегистрируйте все обновляемые SKSpriteObjects в качестве наблюдателей для ключа «updateTheme». -Объект, который запускает уведомление «updateTheme», создаст и присоединит к уведомлению объект, содержащий текущие атрибуты темы. -При обнаружении уведомления «updateTheme» каждый из наблюдателей развернет объект, а затем получит доступ к обновленным цветам этого развернутого объекта.
Вопрос
Хотя я считаю, что передача объекта в уведомлении - лучшая практика ООП, я полагаю, что все происходящее разворачивание не будет лучшей идеей для скорости. Поэтому я больше склоняюсь к одноэлементному подходу. Что ты думаешь? Возможно, есть лучший способ, о котором я не придумал, массово обновить все объекты в моей игре.