б'єктів, розкриваючи тільки їх інтерфейси, але не реалізацію.
Одинак ?? (англ. Singleton) - породжує шаблон проектування, що гарантує що в однопоточном додатку буде єдиний екземпляр класу з глобальної точкою доступу.
Мета
Гарантує, що у класу є тільки один екземпляр, і надає до нього глобальну точку доступу. Суттєво те, що можна користуватися саме екземпляром класу, так як при цьому в багатьох випадках стає доступною більш широка функціональність. Наприклад, до описаних компонентів класу можна звертатися через інтерфейс, якщо така можливість підтримується мовою.
Плюси
контрольований доступ до єдиного екземпляру.
Мінуси
глобальні об'єкти можуть бути шкідливі для об'єктного програмування, в деяких випадках приводячи до створення немасштабіруемого проекту;
ускладнює написання модульних тестів і проходження TDD.
Застосування
повинен бути рівно один примірник деякого класу, легко доступний всім клієнтам;
єдиний екземпляр повинен розширюватися шляхом породження підкласів, і клієнтам потрібно мати можливість працювати з розширеним екземпляром без модифікації свого коду.
Приклади використання
Ведення отладочного файлу для програми.
Адаптер (англ. Adapter або англ. Wrapper - Обгортка) - структурний шаблон проектування, призначений для організації використання функцій об'єкта, недоступного для модифікації, через спеціально створений інтерфейс. p>
Завдання
Система підтримує необхідні дані і поведінку, але має невідповідний інтерфейс.
Спосіб вирішення
Адаптер передбачає створення класу-оболонки [1] з необхідним інтерфейсом.
Учасники
Клас Adapter призводить інтерфейс класу Adaptee у відповідність з інтерфейсом класу Target (спадкоємцем якого є Adapter). Це дозволяє об'єкту Client використовувати об'єкт Adaptee (за допомогою адаптера Adapter) так, наче він є екземпляром класу Target.
Таким чином Client звертається до інтерфейсу Target, реалізованому в спадкоємця Adapter, який перенаправляє звернення до Adaptee.
Наслідки
Шаблон Адаптер дозволяє включати вже існуючі об'єкти в нові об'єктні структури, незалежно від відмінностей в їх інтерфейсах.
Зауваження та коментарі
Шаблон Адаптер дозволяє в процесі проектування не брати до уваги можливі відмінності в інтерфейсах вже існуючих класів. Якщо є клас, що володіє необхідними методами і властивостями (принаймні, концептуально), то при необхідності завжди можна скористатися шаблоном Адаптер для приведення його інтерфейсу до потрібного вигляду.
Близькому Адаптеру є шаблон Фасад, не завжди можна відрізнити один від іншого.
Застосування шаблону
Типовим прикладом використання шаблону Адаптер можна назвати створення класів, що призводять до єдиному інтерфейсу функції мови PHP забезп...