Singleton
Singleton(одиночка) - порождающий шаблон проектирования, гарантирующий, что в однопоточном приложении будет единственный экземпляр некоторого класса, и предоставляющий глобальную точку доступа к этому экземпляру. У класса есть только один экземпляр, и он предоставляет к нему глобальную точку доступа. При попытке создания данного объекта он создаётся только в том случае, если ещё не существует, в противном случае возвращается ссылка на уже существующий экземпляр и нового выделения памяти не происходит.
На данный момент мы используем синглтон для классов менеджеров или очень важных классов, существующих в единственном экземпляре, и настоятельно рекомендуем использовать синглтон исключительно в этих случаях. Синглтон должен придерживаться максимально возможной инкапсуляции. Паттерн в классе следует реализовывать через наследование от класса Singleton из стартерпака (в качестве дженерика надо указывать тип текущего класса, например LevelController : Singleton). Однако надо помнить, что работа в Awake в синглтоне недопустима, т.к. он еще не инициализировался в этот момент. Но и для этого есть выход, чтоб Awake работал, необходимо переопределить метод AwakeSingleton() и выполнять все необходимые действия в нем.
Нужно понимать что синглтон это анти-паттерн, который порождает кучу зависимостей тем самым нарушая SOLID. Поэтому стараемся использовать его по минимуму.
Last updated