0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Шаблон проектирования<strong>Singleton</strong>также называют шаблоном проектирования "Одиночка". Это порождающий шаблон, который гарантирует, что в однопроцессном программном приложении будет лишь один экземпляр некого класса. Также шаблон предоставляет глобальную точку доступа к вышеупомянутому единственному экземпляру.</p>
1
<p>Шаблон проектирования<strong>Singleton</strong>также называют шаблоном проектирования "Одиночка". Это порождающий шаблон, который гарантирует, что в однопроцессном программном приложении будет лишь один экземпляр некого класса. Также шаблон предоставляет глобальную точку доступа к вышеупомянутому единственному экземпляру.</p>
2
<p>Если абстрагироваться от этого скучного термина, взятого из Википедии, можно привести понятный, но немного грубый пример из реальной жизни: в стране может быть лишь один президент, этот президент действует по обстоятельствам и, в каком-то смысле, этот президент и является одиночкой. Скажем так, шаблон обеспечивает, что создаваемый объект - это<strong>единственный объект своего класса</strong>.</p>
2
<p>Если абстрагироваться от этого скучного термина, взятого из Википедии, можно привести понятный, но немного грубый пример из реальной жизни: в стране может быть лишь один президент, этот президент действует по обстоятельствам и, в каком-то смысле, этот президент и является одиночкой. Скажем так, шаблон обеспечивает, что создаваемый объект - это<strong>единственный объект своего класса</strong>.</p>
3
<p>Прежде чем продолжить, скажем, что этот шаблон не стоит чрезмерно использовать. Все дело в том, что Singleton признан<strong>антипаттерном</strong>, однако это не значит, что он обязательно всегда плох. Порой, он может быть полезным, однако применять его следует с осторожностью. Он вводит в ваше приложение<strong>глобальное состояние</strong>, в результате чего его изменение в одном месте способно повлиять и на другие части разрабатываемого приложения, а это уже может вызвать трудности процесса отладки. И второй минус - Singleton делает ваш код связанным, то есть подводные камни-таки имеются.</p>
3
<p>Прежде чем продолжить, скажем, что этот шаблон не стоит чрезмерно использовать. Все дело в том, что Singleton признан<strong>антипаттерном</strong>, однако это не значит, что он обязательно всегда плох. Порой, он может быть полезным, однако применять его следует с осторожностью. Он вводит в ваше приложение<strong>глобальное состояние</strong>, в результате чего его изменение в одном месте способно повлиять и на другие части разрабатываемого приложения, а это уже может вызвать трудности процесса отладки. И второй минус - Singleton делает ваш код связанным, то есть подводные камни-таки имеются.</p>
4
<p>Но давайте лучше перейдем к коду. Для создания "Одиночки" следует сделать конструктор приватным, отключить клонирование и расширение, плюс создать статическую переменную, необходимую для хранения экземпляра:</p>
4
<p>Но давайте лучше перейдем к коду. Для создания "Одиночки" следует сделать конструктор приватным, отключить клонирование и расширение, плюс создать статическую переменную, необходимую для хранения экземпляра:</p>
5
<p>А вот и пример использования:</p>
5
<p>А вот и пример использования:</p>
6
<p>Если интересует, есть реализация и на<a>Java</a>.</p>
6
<p>Если интересует, есть реализация и на<a>Java</a>.</p>
7
<p><em>По материалам статьи<a>"Design Patterns for Humans"</a>.</em></p>
7
<p><em>По материалам статьи<a>"Design Patterns for Humans"</a>.</em></p>
8
8