1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mifengjun-java-design-patterns

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

推荐使用 wiki 更香

https://github.com/lvgocc/java-design-patterns/wiki

Авторское заявление: за исключением фона или концептуального содержания шаблонов проектирования, всё остальное содержание является результатом глубокого понимания и вывода автора. Автор надеется получить вашу поддержку в виде «звезды» ⭐.

Шаблоны проектирования (реализация Java)

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

  • Упоминание синглтона вызывает ассоциации с «голодным человеком», «ленивым человеком»?
  • Упоминание фабрики вызывает ассоциации с «автомобилем»?
  • Упоминание абстрактной фабрики вызывает ассоциации с «большой фабрикой»?
  • Упоминание адаптера вызывает ассоциации с «штекером», «USB»?

Если да, то эта тема идеально подходит для вас. Вы изучили шаблоны проектирования? Можно попробовать изучить две статьи, чтобы понять одну и ту же концепцию, но с разным «вкусом».

«Каждая статья...» (внезапно прерывается).

«Не говори, покажи мне!»

«Хорошо, старший брат, я всё устрою!»

Каждая статья сопровождается соответствующим учебным материалом и написана простым языком. Я пытаюсь изучать знания экспертов, используя подход новичка. Я не силён в сложных вещах, но мне нравится упрощать сложные вещи. Я верю в закон сохранения сложности. Я также верю, что цель объяснения — сделать его понятным для всех, а не просто продемонстрировать свои знания. Аплодисменты.

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

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

Этот раздел представляет собой обобщённое изложение.

«Паттерны проектирования» изначально появились в области архитектуры.🌉

В 1977 году американский архитектор Кристофер Александр описал некоторые распространённые архитектурные проблемы и предложил решения в своей книге «Язык паттернов архитектуры: города, здания, конструкции» (A Pattern Language: Towns Building Construction).

Два года спустя, в 1979 году, Кристофер Александр в своей следующей книге «Вечный путь строительства» (The Timeless Way of Building) ещё больше укрепил идею паттернов.

Только в 1990 году, 13 лет спустя, термин «паттерны проектирования» вошёл в мир программного обеспечения, и была организована специальная конференция по этой теме.

GOF👨‍🦲👦👨🧑

Через пять лет после того, как «паттерны проектирования» вошли в сферу программного обеспечения, в 1995 году Эрих Гамма (Erich Gamma), Ричард Хелм (Richard Helm), Ральф Джонсон (Ralph Johnson) и Джон Влиссидес (John Vlissides) опубликовали книгу «Паттерны проектирования: элементы многоразового объектно-ориентированного программного обеспечения» (Design Patterns: Elements of Reusable Object-Oriented Software).

Это вызвало волну интереса к паттернам проектирования в сообществе разработчиков программного обеспечения и привело к появлению множества новых паттернов. Эти четыре автора стали известны в мире разработки программного обеспечения как Gang of Four (четвёрка), а паттерны проектирования стали известны под этим псевдонимом GOF.

gof

Что делают паттерны проектирования

Сегодня существует гораздо больше 23 паттернов, описанных автором, и их количество продолжает расти. Однако все эти паттерны преследуют одну и ту же цель — быть многократно используемыми для решения повторяющихся проблем, подобно тому, как это было описано в книге GOF, «основы многоразового использования объектно-ориентированных программ».

Один метод, решение n проблем. Вот что такое паттерн — он решает общие проблемы. В интернете есть много сайтов с информацией на эту тему. Посмотрите, что нашлось в поиске ### Поведенческие (11)

  • Шаблон «Компоновщик» (Composite): позволяет объединять объекты в древовидную иерархическую структуру, предоставляя единый интерфейс для работы с отдельными объектами и группами объектов.

  • Шаблон «Метод-шаблон» (Template Method): определяет алгоритм в операции и откладывает некоторые шаги алгоритма до подклассов, позволяя им переопределять определённые шаги без изменения структуры алгоритма.

  • Стратегический шаблон (Strategy): определяет набор алгоритмов и инкапсулирует каждый из них, что позволяет заменять алгоритмы без влияния на клиентов, использующих эти алгоритмы.

  • Командный шаблон (Command): упаковывает запрос как объект, разделяя ответственность за выдачу запроса и его выполнение.

  • Цепочка обязанностей (Chain of Responsibility): передаёт запрос от одного объекта к другому, пока запрос не будет обработан. Это помогает уменьшить связь между объектами.

  • Состояние (State): позволяет объекту изменять своё поведение при изменении внутреннего состояния.

  • Наблюдатель (Observer): устанавливает отношения «один ко многим» между объектами, где изменение одного объекта уведомляет другие объекты, влияя на их поведение.

  • Посредник (Mediator): определяет посредника для упрощения взаимодействия между существующими объектами, снижая степень их связанности и позволяя объектам взаимодействовать без знания друг о друге.

  • Итератор (Iterator): предоставляет способ последовательного доступа к элементам в агрегате без раскрытия внутренней структуры агрегата.

  • Посетитель (Visitor): обеспечивает различные способы доступа к каждому элементу в коллекции, позволяя каждому элементу иметь несколько посетителей.

  • Мементо (Memento): сохраняет внутреннее состояние объекта без нарушения инкапсуляции, чтобы можно было восстановить это состояние позже.

  • Интерпретатор (Interpreter): определяет грамматику языка и методы интерпретации предложений на этом языке, обеспечивая интерпретацию.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Тема, посвящённая шаблонам проектирования Java. Данный репозиторий является синхронизированным с GitHub, приглашаем добавить его в избранное на GitHub. Развернуть Свернуть
Java и 2 других языков
CC0-1.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mifengjun-java-design-patterns.git
git@api.gitlife.ru:oschina-mirror/mifengjun-java-design-patterns.git
oschina-mirror
mifengjun-java-design-patterns
mifengjun-java-design-patterns
main