Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

VlasovM/Design-patterns

Repository files navigation

Паттерны проектирования

Навигация:

Описание:

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

Все паттерны и примеры взяты из книиг Head First "Паттерны проектирования" O`Reilly

Паттерны проектирования:

Паттерн - решение задачи в контексте.

  • Стратегия - определяет семейство алгоритмов, инкапсулирует каждый из них и обеспечивает их взаимозаменяемость. Он позволяет модифицировать алгортмы независимо от их использования на стороне клиента.
  • Наблюдатель - реализует отношение один ко многим таким образом, что при изменении одного объекта происходит автоматическое оповезение и обновление зависимых объектов.
  • Декоратор - динамически наделяет объект новыми возможностями и является гибкой альтернативой субклассированию в олбасти расширения функциональности.
  • Фабричный метод - определяет интерфейс создания объекта, но позволяет субклассам выбрать класс создаваемого экземпляра. Таким образом, Фабричный Метод делегирует операцию создания экземпляра субклассам.
  • Абстрактная Фабрика - предоставляет интерфейс создания семейств взаимосвязанных или взаимозависимых объектов без укзаания их конкретных классов.
  • Одиночка - гарантирует, что класс имеет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру.
  • Команда - инкапсулирует запрос в виде объекта, делая возможной параметризацию клиентских объектов с другими запросами, организацию очереди или регистрацию запросов, а также поддержку отмены операции.
  • Адаптер - преобразует интерфейс класса к другому интерфейсу, на который рассчитан клиент. Адаптер обеспечивает совместную работу классов, невозможную в обычных условиях из-за несовместимости интерфейсов.
  • Фасад - предоставляет унифицированный интерйес к группе интерфейсов подсистемы. Фасад определяет высокоуровневый интерфейс, упрощающий роботу с подсистемой.
  • Шаблонный метод - определяет "скелет" алгоритма в методе, оставляя определение реализации некоторых шагов субклассам. Субклассы могут переопределять некоторые части алгоритма без изменения его структуры.
  • Итератор - предоставляет механизм последовательного перебора элементов коллекции без раскрытия её внутреннего представления.
  • Состояние - управляет изменением поведения объекта при изменении его внутреннего состояния. Внешне это выглядит так, словно объект меняет свой класс.

Принципы проектирования:

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

Классификация паттернов:

  • Порождающие - связаны с созданием экземпляров объектов, все они обеспечиваюи средства логической изоляции клиента от создаваемых объектов.
  • Структурные - объединяют классы или объекты в более крупные структуры.
  • Поведенческие - относятся к взаимодействиям и распределнию обязанностей между классами и объектами.

image

About

Demonstration main design patterns

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /