Вы используете синглтоны для предоставления глобально доступного общего экземпляра класса Это определение не уникально для документации Apple. В статье Википедии, на которую я ссылался выше, также говорится, что «реализация одноэлементного шаблона должна обеспечивать глобальный доступ к этому экземпляру».
Почему синглтон используется в Swift?
Singleton - это творческий шаблон дизайна, который гарантирует, что существует только один объект такого рода, и обеспечивает единую точку доступа к нему для любого другого кода. Синглтон имеет почти те же плюсы и минусы, что и глобальные переменные. Хотя они очень удобны, они нарушают модульность вашего кода.
Когда не следует использовать синглтон?
Единственная ситуация, в которой вам следует рассматривать синглтон, - это когда наличие более одного экземпляра уже глобальных данных на самом деле будет логической или аппаратной ошибкой доступа.
Ссылки по теме:
- Хрупкость, вызываемая Global State и Singletons.
- Внедрение зависимостей, чтобы избежать синглтонов.
- Фабрики и синглтоны.
Для чего годится синглтон?
Синглетон следует использовать при управлении доступом к ресурсу, совместно используемому всем приложением, и потенциально иметь несколько экземпляров одного и того же класса было бы разрушительным. Убедиться, что доступ к общим ресурсам потокобезопасен, - один из очень хороших примеров того, где такой шаблон может быть жизненно важным.
Singleton плохой Swift?
Одиночки не всегда плохие, но во многих ситуациях они сопряжены с рядом проблем, которых можно избежать, создав более четко определенные отношения между вашими объектами и используя зависимость инъекции.