Page 49 - 4190
P. 49
Недоліком патерну Factory Method є те, що у випадку класичного
варіанту патерну навіть для породження єдиного об'єкту необхідно
створювати відповідну фабрику
Патерн Singleton
Часто в системі можуть існувати сутності тільки в єдиному екзе-
мплярі, наприклад, система ведення системного журналу повідомлень
або драйвер дисплея. У таких випадках необхідно уміти створювати
єдиний екземпляр деякого типу, надавати до нього доступ ззовні і за-
бороняти створення декількох екземплярів того ж типу. Такі можли-
вості надає патерн Singleton (одинак).
Архітектура патерну Singleton заснована на ідеї використання
глобальної змінної, що має такі важливі властивості:
така змінна доступна завжди, а час життя глобальної змінної –
від запуску програми до її завершення;
надає глобальний доступ, тобто, така змінна може бути доступ-
на з будь-якої частини програми.
Проте, використати глобальну змінну деякого типу безпосеред-
ньо неможливо, оскільки існує проблема забезпечення єдиності екзе-
мпляра, а саме, можливе створення декількох змінних того ж самого
типу (наприклад, стекових).
Для вирішення цієї проблеми патерн Singleton покладає контроль
над створенням єдиного об'єкту на сам клас. Доступ до цього об'єкту
здійснюється через статичну функцію-член класу, яка повертає вказі-
вник або посилання на нього. Цей об'єкт буде створений тільки при
першому зверненні до методу, а усі подальші виклики просто повер-
тають його адресу. Для забезпечення унікальності об'єкту, конструк-
тори і оператор присвоєння оголошуються закритими.
UML-діаграма класів патерну Singleton зображена на рисунку 5.5.
Рисунок 5.5 – UML-діаграма класів патерну Singleton
49