Використання шаблону Singleton у підготовці програмного продукту

Автор(и)

  • Немченко В.В. https://orcid.org/0000-0003-2262-719X , Черкаський державний технологічний університет image/svg+xml
  • Півень О.Б. https://orcid.org/0000-0001-5601-8304 , Черкаський державний технологічний університет image/svg+xml
  • Салапатов В.І. https://orcid.org/0000-0001-7567-637X , Черкаський державний технологічний університет image/svg+xml

DOI:

https://doi.org/10.34121/1028-9763-2026-3-103-111

Ключові слова:

шаблон проєктування, породжувальні шаблони, Singleton (Сінглтон), ієрархічна структура, програмна інженерія, архітектура програмного забезпечення, проєктування програмного забезпечення, вебтехнології, вебпрограмування

Анотація

У сучасному світі розвиток процесів у сфері інженерії програмного забезпечення відбувається швидкими темпами: технології часто оновлюються, а життєвий цикл програмних  рішень скорочується, через що попередній досвід не завжди слугує надійною основою для прогнозування. За обмежених ресурсів використання перевірених проєктних рішень, зокрема шаблонів проєктування, є одним зі способів підвищення стійкості програмних продуктів до змін. У статті проведено систематизований аналіз породжувального шаблону Singleton, який гарантує існування лише одного екземпляра класу та надає глобальну точку доступу до нього впродовж усього життєвого циклу програми. Розглянуто теоретичні основи шаблону, його ключові властивості (приватний конструктор, статичне поле, метод getInstance) та типові сценарії застосування — логування, конфігурація, пул з'єднань із базою даних, кешування. Здійснено порівняльний аналіз основних реалізацій (Eager та Lazy Initialization, синхронізований метод, Double-Checked Locking з volatile, Initialization-on-Demand Holder, std::call_once) за критеріями потокобезпеки, продуктивності та складності. На основі систематизації даних щодо середнього часу виклику getInstance() у багатопотоковому середовищі сформульовано практичні рекомендації щодо вибору реалізації залежно від мови програмування й характеру системи, а також окреслено випадки, коли доцільніше застосовувати альтернативи — Dependency Injection чи Service Locator. Показано, що універсально найкращої реалізації не існує, оскільки кожен варіант є компромісом між швидкістю доступу, обсягом пам'яті та складністю коду. Визначено перспективи подальших досліджень, зокрема поведінку Singleton у хмарних середовищах, його взаємодію з контейнерами IoC та автоматизоване виявлення шаблону засобами статичного аналізу коду. Табл.: 2. Іл.: 5. Бібліогр.: 11 назв. 

Посилання

1. Gamma E., Helm R., Johnson R., Vlissides J. Design patterns: Elements of reusable object-oriented software. Addison-Wesley, 1994. 395 р.

2. Sa’adah U., Hasim J.A.N., Hisyam M. Implementing Singleton method in design of MVC-based PHP framework. International Electronics Symposium (IES). IEEE. 2015. P. 212–217. DOI: https://doi.org/10.1109/ELECSYM.2015.7380843.

3. Hasim J.A.N., Damastuti F.A., Saadah U. Developing Microframework based on Singleton and Abstract Factory Design Pattern. International Electronics Symposium (IES). IEEE. Surabaya, Indonesia, 9–11 August 2022. P. 676–683. DOI: https://doi.org/10.1109/IES55876.2022.9888548.

4. Nacef A., Sehimi S., Bahroun S., Ben Ahmed S. Singleton and Factory Design Patterns Detection Based on Features and Machine Learning. Communications in Computer and Information Science. Springer, 2024. P. 189–210. DOI: https://doi.org/0.1007/978-3-031-64182-4_9.

5. Sabbag Filho N. The Singleton Pattern in Scalability Contexts: Performance Evaluation and Maintenance Impacts of Systems. ResearchGate, 2024. P. 1–6. DOI: https://doi.org/10.5281/zenodo.13719389.

6. Andersen G. MoldStud Research Team. Exploring Alternative Patterns — When to Replace the Singleton Design Pattern. MoldStud, 2025. URL: https://moldstud.com/articles/p-exploring-alternative-patternswhen-to-replace-the-singleton-design-pattern (дата звернення: 16.06.2026).

7. Bloch J. Effective Java. 3rd ed. Boston: Addison-Wesley, 2018. 416 p.

8. Goetz B., Peierls T., Bloch J., Bowbeer J., Holmes D., Lea D. Java Concurrency in Practice. Boston: Addison-Wesley, 2006. 384 p.

9. Bacon D., Bloch J., Bogda J., Click C., Haahr P., Lea D. et al. The «Double-Checked Locking is Broken» Declaration. University of Maryland, 2001. URL:https://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html (дата звернення: 16.06.2026).

10. Williams A. C++ Concurrency in Action. 2nd ed. Shelter Island: Manning, 2019. 592 p.

11. Neelan A. Singleton Pattern Implementations and Thread Safety Considerations in Multithreaded Environment. International Journal of Core Engineering & Management. 2025. Vol. 8, Issue 2. P. 5–14. DOI: https://doi.org/10.5281/zenodo.15486141.

Завантаження

Views: 16
Downloads: 12

Опубліковано

2026-09-14

Номер

Розділ

МОДЕЛЮВАННЯ І УПРАВЛІННЯ