Це коротка стаття про патерни проєктування в Java. Реалізації патернів не буде, тут тільки список патернів, які є в java, і їхній короткий зміст. Вона буде корисна тим, хто вже в темі, для повторення й узагальнення. Або навпаки, для тих, хто вперше підійшов до патернів, – для найпершого огляду теми, перш ніж копнути глибше.
Патерни проєктування (шаблони проєктування) – це готові до використання розв'язки завдань, що часто виникають у програмуванні. Це не клас і не бібліотека, яку можна підключити до проєкту, це щось більше. Патерни проєктування, які підходять під завдання, реалізуються в кожному конкретному випадку. Слід пам'ятати, що такий патерн, якщо застосувати його неправильно або до невідповідного завдання, може призвести до чималої кількості проблем. Проте правильно застосований патерн допоможе вирішити завдання легко і просто.
Типи патернів:
![Патерни проєктування в Java [Частина 1] - 1](https://cdn.javarush.com/images/article/c35ac27e-86a9-49b3-bb23-9df463b38eb8/1024.jpeg)
- твірні
- структурні
- поведінкові
- Singleton (Одинак) – обмежує створення одного екземпляра класу, забезпечує доступ до його єдиного об'єкта.
- Factory (Фабрика) – використовується, коли у нас є суперклас із кількома підкласами і на основі введення нам потрібно повернути один із підкласів.
- Abstract Factory (Абстрактна фабрика) – використовуємо суперфабрику для створення фабрики, потім використовуємо створену фабрику для створення об'єктів.
- Builder (Будівельник) – використовується для створення складного об'єкта з використанням простих об'єктів. Поступово він створює більший об'єкт з малого і простого об'єкта.
- Prototype (Прототип) – допомагає створити дубльований об'єкт із кращою продуктивністю, замість нового створюється клон наявного об'єкта, що повертається.
- Adapter (Адаптер) – це конвертер між двома несумісними об'єктами. Використовуючи паттерн адаптера, ми можемо об'єднати два несумісні інтерфейси.
- Composite (Компонувальник) – використовує один клас для представлення деревоподібної структури.
- Proxy (Заступник) – представляє функціональність іншого класу.
- Flyweight (Легковаговик) – замість створення великої кількості схожих об'єктів, об'єкти використовуються повторно.
- Facade (Фасад) – забезпечує простий інтерфейс для клієнта, і клієнт використовує інтерфейс для взаємодії з системою.
- Bridge (Міст) – робить конкретні класи незалежними від класів реалізації інтерфейсу.
- Decorator (Декоратор) – додає нові функціональні можливості наявного об'єкта без прив'язки його структури.
- Template Method (Шаблонний метод) – визначає основу алгоритму і дає змогу нащадкам перевизначати деякі кроки алгоритму, не змінюючи його структуру загалом.
- Mediator (Посередник) – представляє клас посередника, який обробляє всі комунікації між різними класами.
- Chain of Responsibility (Ланцюжок обов'язків) – дає змогу уникнути жорсткої залежності відправника запиту від його одержувача, водночас запит може бути опрацьований кількома об'єктами.
- Observer (Спостерігач) – дає змогу одним об'єктам спостерігати і реагувати на події, що відбуваються в інших об'єктах.
- Strategy (Стратегія) – алгоритм стратегії може бути змінений під час виконання програми.
- Command (Команда) – інтерфейс команди оголошує метод для виконання певної дії.
- State (Стан) – об'єкт може змінювати свою поведінку залежно від його стану.
- Visitor (Відвідувач) – використовується для спрощення операцій над угрупованнями пов'язаних об'єктів.
- Interpreter (Інтерпретатор) – визначає граматику простої мови для проблемної області.
- Iterator (Ітератор) – послідовно здійснює доступ до елементів об'єкта колекції, не знаючи його основного представлення.
- Memento (Зберігач) – використовується для зберігання стану об'єкта, пізніше цей стан можна відновити.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ