Введение
Модель проектирования в объектно-ориентированной разработке программного обеспечения
In software engineering, the singleton pattern is a software design pattern that restricts the instantiation of a class to a singular instance. One of the well known "Gang of Four" design patterns, which describes how to solve recurring problems in object oriented software, the pattern is useful when exactly one object is needed to coordinate actions across a system. More specifically, the singleton pattern allows objects to:
Ensure they only have one instance
Provide easy access to that instance
Control their instantiation (for example, hiding the constructors of a class)
The term comes from the mathematical concept of a singleton.
В разработке программного обеспечения, шаблон проектирования "одиночка" (singleton) – это шаблон проектирования, который ограничивает создание экземпляров класса до единственного. Являясь одним из известных шаблонов "Четвёрки авторов" (Gang of Four), описывающих способы решения повторяющихся задач в объектно-ориентированном программировании, этот шаблон полезен, когда в системе требуется ровно один объект для координации действий. В частности, шаблон "одиночка" позволяет объектам:
In software engineering, the singleton pattern is a software design pattern that restricts the instantiation of a class to a singular instance. One of the well known "Gang of Four" design patterns, which describes how to solve recurring problems in object oriented software, the pattern is useful when exactly one object is needed to coordinate actions across a system. More specifically, the singleton pattern allows objects to:
Ensure they only have one instance
Provide easy access to that instance
Control their instantiation (for example, hiding the constructors of a class)
The term comes from the mathematical concept of a singleton.
Гарантировать наличие только одного экземпляра.
Обеспечивать простой доступ к этому экземпляру.
Контролировать процесс создания экземпляров (например, скрывая конструкторы класса).
In software engineering, the singleton pattern is a software design pattern that restricts the instantiation of a class to a singular instance. One of the well known "Gang of Four" design patterns, which describes how to solve recurring problems in object oriented software, the pattern is useful when exactly one object is needed to coordinate actions across a system. More specifically, the singleton pattern allows objects to:
Ensure they only have one instance
Provide easy access to that instance
Control their instantiation (for example, hiding the constructors of a class)
The term comes from the mathematical concept of a singleton.
Термин происходит от математического понятия "одиночка" (singleton).
In software engineering, the singleton pattern is a software design pattern that restricts the instantiation of a class to a singular instance. One of the well known "Gang of Four" design patterns, which describes how to solve recurring problems in object oriented software, the pattern is useful when exactly one object is needed to coordinate actions across a system. More specifically, the singleton pattern allows objects to:
Ensure they only have one instance
Provide easy access to that instance
Control their instantiation (for example, hiding the constructors of a class)
The term comes from the mathematical concept of a singleton.
Общее применение
Одиночные экземпляры часто предпочтительнее глобальных переменных, поскольку они не засоряют глобальное пространство имен (или пространство имен, в котором они содержатся). Кроме того, они обеспечивают отложенное выделение и инициализацию, в то время как глобальные переменные во многих языках всегда потребляют ресурсы. Шаблон Singleton также может служить основой для других шаблонов проектирования, таких как абстрактная фабрика, фабричный метод, строитель и прототип. Объекты-фасады также часто являются одиночными экземплярами, поскольку требуется только один объект-фасад. Ведение журналов – распространенный пример практического применения Singleton, поскольку всем объектам, желающим записывать сообщения в журнал, требуется единая точка доступа и концептуально они пишут в один источник.
Критика
Некоторые считают синглетон антипаттерном, который вводит глобальное состояние в приложение, зачастую без необходимости. Это создает потенциальную зависимость других объектов от синглетона, требуя анализа деталей реализации для определения, существует ли эта зависимость на самом деле. Увеличение связанности может затруднить модульное тестирование. В свою очередь, это накладывает ограничения на любую абстракцию, использующую синглетон, например, препятствует одновременному использованию нескольких экземпляров. Синглетоны также нарушают принцип единственной ответственности, поскольку они отвечают не только за выполнение своих основных функций, но и за обеспечение собственной уникальности.