Page 51 - 4190
P. 51
ємопов’язаних одиночок з'являються нові питання:
як гарантувати, щодо моменту використання одного класу
Singleton екземпляр іншого залежного вже створений?
як забезпечити можливість безпечного використання одного
класу Singleton іншим при завершенні програми? Іншими словами, як
гарантувати, що у момент знищення першого сингелтона в його де-
структорі ще можливе використання другого залежного сингелтона
(тобто другий сингелтон до цього моменту ще не зруйнований)?
Незважаючи на уявну простоту патерну Singleton (використову-
ється всього один клас), його реалізація не є тривіальною.
Патерн Singleton має такі переваги:
клас сам контролює процес створення єдиного екземпляра;
патерн легко адаптувати для створення потрібного числа екзе-
мплярів;
можливість створення об'єктів класів, похідних від Singleton.
Недоліки патерну Singleton полягають в тому, що у разі викорис-
тання декількох взаємозалежних одиночок їх реалізація може різко
ускладнитися.
Патерн Abstract Factory
Абстрактна фабрика (Abstract Factory) — подає інтерфейс для
утворення родин взаємозв'язаних або взаємозалежних об'єктів, не
специфікуючи їхніх конкретних класів.
Шаблон Абстрактна фабрика слід використовувати, якщо:
система не повинна залежати від того, як утворюються, компо-
нуються та представляються вхідні до неї об'єкти;
вхідні до родини взаємозв'язані об'єкти повинні використовува-
тися разом і необхідно забезпечити виконання цього обмеження;
система повинна конфігуруватися однією з родин складаючих
її об'єктів;
треба подати бібліотеку об'єктів, розкриваючи тільки їхні ін-
терфейси, але не реалізацію.
UML-діаграма, що описує структуру шаблону проектування
Abstract Factory представлена на рисунку 5.6.
Патерн Lazy initialization
Відкладена (лінива) ініціалізація (Lazy initialization) – прийом у
програмуванні, коли деяка ресурсномістка операція (створення об'єк-
та, обчислення значення) виконується безпосередньо перед тим, як
буде використаний її результат. Таким чином, ініціалізація викону-
ється «на вимогу», а не завчасно. Аналогічна ідея знаходить застосу-
51