JavaRush /Java блог /Random /Патерни проєктування в Java [Частина 1]
Ivan Zaitsev
33 рівень
Киев

Патерни проєктування в Java [Частина 1]

Стаття з групи Random
Це коротка стаття про патерни проєктування в Java. Реалізації патернів не буде, тут тільки список патернів, які є в java, і їхній короткий зміст. Вона буде корисна тим, хто вже в темі, для повторення й узагальнення. Або навпаки, для тих, хто вперше підійшов до патернів, – для найпершого огляду теми, перш ніж копнути глибше. Патерни проєктування (шаблони проєктування) – це готові до використання розв'язки завдань, що часто виникають у програмуванні. Це не клас і не бібліотека, яку можна підключити до проєкту, це щось більше. Патерни проєктування, які підходять під завдання, реалізуються в кожному конкретному випадку. Слід пам'ятати, що такий патерн, якщо застосувати його неправильно або до невідповідного завдання, може призвести до чималої кількості проблем. Проте правильно застосований патерн допоможе вирішити завдання легко і просто. Патерни проєктування в Java [Частина 1] - 1Типи патернів:
  • твірні
  • структурні
  • поведінкові
Твірні патерни забезпечують механізми ініціалізації, даючи змогу створювати об'єкти зручним способом. Структурні патерни визначають відносини між класами та об'єктами, даючи їм змогу працювати спільно. Поведінкові патерни використовуються для того, щоб спростити взаємодію між сутностями. Твірні:
  • 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 (Зберігач) – використовується для зберігання стану об'єкта, пізніше цей стан можна відновити.
Проходячи курс JavaRush, ви зіткнетеся з кількома патернами з цього списку. Рекомендую завдання за патернами: 1522, 1530, 1631, big01, 2912, 3107... Розумне використання патернів проєктування дозволяє підвищити надійність обслуговування коду, оскільки на додачу до того, щоб бути гарним розв'язанням загальної проблеми, патерни проєктування можуть бути розпізнані іншими розробниками, що зменшує час роботи з певним кодом.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ