Паттерн GOF (Gang of Four) - IZIART

Разработка сайтов
индивидуальный дизайн

Главная » Programming » Паттерн GOF (Gang of Four)

Паттерн GOF (Gang of Four)

Обновлено: 05.10.2023
programming - iziart.ru

Что такое паттерн GOF

Паттерн GOF (Gang of Four) — это набор основных шаблонов проектирования, описанных в книге «Design Patterns: Elements of Reusable Object-Oriented Software» («Приемы объектно-ориентированного проектирования. Паттерны проектирования») авторства Эриха Гаммы, Ричарда Хелма, Ральфа Джонсона и Джона Влиссидеса. Эта книга, изданная в 1994 году, стала одной из наиболее известных и влиятельных книг в области проектирования программного обеспечения.

Книга определяет 23 различных шаблона проектирования, которые объединены в три категории:

К содержанию ↑

Шаблоны создания (Creational Patterns)

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

Шаблоны структуры (Structural Patterns)

  1. Адаптер (Adapter): преобразует интерфейс одного класса в другой, чтобы классы с несовместимыми интерфейсами могли работать вместе.
  2. Мост (Bridge): разделяет абстракцию от ее реализации, позволяя им меняться независимо друг от друга. Это позволяет легко добавлять новые варианты реализации без изменения абстракции.
  3. Компоновщик (Composite): обрабатывает отдельные объекты и группы объектов единообразно. Он позволяет создавать иерархические древовидные структуры из объектов и работать с ними, как с единым объектом.
  4. Декоратор (Decorator): динамически добавляет новую функциональность объекту путем оборачивания его в другой класс.
  5. Фасад (Facade): предоставляет унифицированный интерфейс для набора интерфейсов в сложной системе. Он упрощает взаимодействие с системой, скрывая ее сложность и предоставляя удобный способ работы с ней.
  6. Легковес (Flyweight): позволяет эффективно поддерживать множество мелких объектов, используя общие данные и сокращая использование памяти.
  7. Заместитель (Proxy): представляет объект-заместитель, контролирующий доступ к другому объекту и предоставляющий дополнительную функциональность.
К содержанию ↑

Шаблоны поведения (Behavioral Patterns)

  1. Цепочка обязанностей (Chain of Responsibility): позволяет создавать цепочку объектов, которые последовательно обрабатывают запросы, передавая их по цепи, пока один из объектов не обработает запрос или он не достигнет конца цепи.
  2. Команда (Command): инкапсулирует запрос в виде объекта, позволяя параметризовать клиентов с разными запросами, организовывать историю команд и поддерживать отмену операций.
  3. Итератор (Iterator): предоставляет способ последовательного доступа к элементам коллекции без раскрытия ее внутренней структуры.
  4. Медиатор (Mediator): определяет объект, который инкапсулирует способ взаимодействия между набором объектов, обеспечивая слабую связь между ними. Это позволяет уменьшить зависимости между объектами и сделать систему более гибкой.
  5. Хранитель (Memento): позволяет зафиксировать и сохранить внутреннее состояние объекта так, чтобы его можно было восстановить позже, без раскрытия деталей реализации.
  6. Наблюдатель (Observer): определяет зависимость «один-ко-многим» между объектами, чтобы при изменении состояния одного объекта все зависящие от него объекты автоматически обновлялись.
  7. Состояние (State): позволяет объекту изменять свое поведение при изменении его внутреннего состояния.
  8. Стратегия (Strategy): определяет семейство алгоритмов, инкапсулирует каждый из них и делает их взаимозаменяемыми.
  9. Шаблонный метод (Template Method): определяет скелет алгоритма, перекладывая некоторые шаги на подклассы.
  10. Посетитель (Visitor): позволяет добавлять новые операции к объектам без изменения их классов. Он достигается путем вынесения операций в отдельные классы посетителей, которые могут быть применены к объектам.
К содержанию ↑

Вывод

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

Важно отметить, что паттерны GOF не являются простыми правилами, которые следует безоговорочно применять во всех ситуациях. Их применение требует обдуманности и адаптации к конкретной задаче и контексту проекта.