Привет, с возвращением! Спасибо всем вам, я получил отличный отклик на мои последние 2 статьи из этой серии. Если вы один из тех, кто не читал часть 1 и часть 2 этой серии, я предлагаю вам попробовать.

В этой статье я расскажу (1) что такое поведенческий шаблон проектирования (2) его типы на простых примерах. Я дам краткое изложение по каждой теме и некоторый код, чтобы вы могли быстро и легко понять его.

Ключевые слова — шаблон проектирования, Python, творческий, поведенческий, структурный.

Что такое шаблон поведенческого проектирования

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

Например, это хорошая практика, когда вы испытываете искушение внедрить решение для занятого ожидания или когда вам нужно загрузить какой-то ненужный код для конкретного варианта использования.

Типы

Наблюдатель —Шаблон наблюдателя устанавливает отношение один ко многим между субъектом и несколькими наблюдателями.

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

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

Посетитель. Позволяет добавлять новые функции в существующую иерархию классов, не изменяя ее.

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

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

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

Этот шаблон проектирования помогает нам быстро выполнять итерацию по длинному списку объектов, особенно линейных и нелинейных структур данных.

Этот шаблон поддерживает варианты обхода коллекций, а передача нового итератора или коллекции в клиентский код не нарушает код и может быть легко установлена ​​на нем.

Стратегия —предлагает клиенту семейство взаимозаменяемых алгоритмов. В основном используется для динамического изменения поведения объекта.

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

Используя этот шаблон, можно определить семейство иерархий и использовать их взаимозаменяемо. Это также может помочь нам изменить стратегию во время выполнения, благодаря чему мы можем избежать использования любого переключателя из if -else лестница.

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

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

Спасибо, что прочитали эту статью. 😃😃😃 Разумеется, эта информация основана на моих знаниях. Если вам понравилась эта статья, похлопайте мне и не стесняйтесь связаться со мной в Twitter, GitHub. >» и LinkedIn.

Мои старые статьи:

  1. Шаблон проектирования Python — структурный | Часть 2 [Технические]
  2. Шаблон проектирования Python — создание | Часть 1[Технические]
  3. Работа с git для нубов [Технический]