Резюме для программиста
Там понимать нечего. Если графики не касаться, а только саму логику игры разрабатывать, то это обычная система классов а-ля модель, как в любом другом приложении. Которая должна быть максимально абстрагирована от того, какая клиентская технология применяется.
public static Singleton Instance { get { return instance; } }
Это должно быть в некоем статическом классе типа MySingletonServices?
Этот синглетон у меня - объект, хранящий всё состояние игры. Это состояние надо постоянно обновлять. Буквально тысячи обращений в секунду на разных уровнях вложенности графа объектов в этом синглетоне. Как лучше сделать - тупо дать публичный доступ к изменению свойств (сеттерам), или городить методы типа SetProperty1, SetProperty2 и т.п.? Видел какие-то непонятные подходы, где сеттеры непубличны, геттеры публичны, зато публичны методы изменения свойств. В чём смысл, если так и так свойство можно поменять извне, но только через метод, а не свойство? Такое ощущение, что народ думает, что если сеттер скрыл, то типа дофига инкапсулировал данные в своём классе. И пофиг, что та же самая установка свойств через публичные методы сделана.
Встречал мнение, что если у тебя геттеры открыты, то мол трудно отследить все изменения свойств. А с методами легче? То же самое, вид сбоку.