Какие паттерны знаешь

  • Паттерны порождающие, создания объектов (Creational):
    • Singleton (Одиночка)
    • Abstarct Factory (Абстрактная фабрика)
    • Abstract method (Абстрактный метод)
  • Паттерны структурные (Structural):
    • MVC
    • Decorator (Декоратор)
    • Adapter/Bridge (Адаптер/Мост)
    • Facade (Фасад)
    • Composite (Компоновщик)
  • Паттерны поведения и взаимодействия объектов (Behavioral):
    • Observer: Notification, KVO (Наблюдатель: нотификация, Наблюдение свойствами)
    • Memento (Archiving+UserDefaults)
    • Command (Target-Action mechanism) (Команда)
    • Template method (Шаблонный метод)
    • Strategy/State (Стратегия/Состояние)

Oct. 14, 2023, Источник

Существует множество паттернов проектирования, каждый из которых решает определённую задачу или предлагает эффективный подход к организации кода. Они помогают делать код более читаемым, упрощают рефакторинг и поддержку программы. Паттерны обычно классифицируют на три основных типа: порождающие, структурные и поведенческие.

Порождающие паттерны (Creational Patterns)
Упрощают процесс создания объектов, делая систему независимой от способа создания, компоновки и представления объектов.

  • Одиночка (Singleton): Обеспечивает наличие только одного экземпляра класса и предоставляет к нему глобальный доступ.
  • Фабричный метод (Factory Method): Определяет интерфейс для создания объекта, но позволяет подклассам изменять тип создаваемых объектов.
  • Абстрактная фабрика (Abstract Factory): Позволяет создавать семейства связанных или зависимых объектов без указания их конкретных классов.
  • Прототип (Prototype): Позволяет копировать существующие объекты без делания кода зависимым от их классов.
  • Строитель (Builder): Позволяет создавать сложные объекты пошагово, используя один и тот же код для создания различных представлений объектов.

Структурные паттерны (Structural Patterns)
Описывают, как объединять объекты и классы в более крупные структуры.

  • Адаптер (Adapter): Позволяет объектам с несовместимыми интерфейсами работать вместе.
  • Мост (Bridge): Разделяет один или несколько классов на две отдельные иерархии — абстракцию и реализацию, позволяя им изменяться независимо друг от друга.
  • Композит (Composite): Позволяет группировать множество объектов в древовидную структуру, и работать с этой структурой так, как будто это единственный объект.
  • Декоратор (Decorator): Позволяет динамически добавлять новые функции объектам, помещая их в объекты-обёртки.
  • Фасад (Facade): Предоставляет простой интерфейс к сложной системе классов, библиотеке или фреймворку.

Поведенческие паттерны (Behavioral Patterns)
Регулируют эффективное взаимодействие и распределение обязанностей между объектами.

  • Наблюдатель (Observer): Позволяет объектам получать уведомления об изменениях в других объектах.
  • Стратегия (Strategy): Определяет семейство алгоритмов, инкапсулирует каждый из них и делает их взаимозаменяемыми.
  • Состояние (State): Позволяет объекту изменять своё поведение в зависимости от его состояния.
  • Команда (Command): Превращает запросы в объекты, позволяя передавать их как аргументы при вызове методов, ставить их в очередь, логировать и т.д.
  • Цепочка обязанностей (Chain of Responsibility): Позволяет передавать запросы последовательно по цепочке обработчиков, пока один из них не обработает запрос.
  • Посредник (Mediator): Позволяет уменьшить взаимосвязь между классами, вынося межклассовые взаимодействия в класс-посредник.
  • Итератор (Iterator): Даёт возможность последовательно обходить элементы составных объектов, не раскрывая их внутреннего представления.

Каждый паттерн проектирования решает определённую проблему и может быть полезен в различных ситуациях. Однако важно помнить, что применение паттернов требует умения и понимания конкретной задачи, для которой он может быть использован.

April 10, 2024, easyoffer