[Фэй Чао] Какие шаблоны проектирования мы можем извлечь из JDK?

Java задняя часть

Структурные модели:

Режим адаптера:

Часто используется для адаптации нового интерфейса к старому интерфейсу.

Фэй Чао прошептал: В нашем бизнес-коде часто есть новые и старые требования к адаптации интерфейса, и этот режим можно использовать.

Режим моста:

Разделите абстрактные и абстрактные конкретные реализации, чтобы абстрактные и абстрактные конкретные реализации можно было изменять независимо.

Фэй Чао прошептал: — На самом деле, мы используем этот режим каждый день, но вы можете об этом не знать. Пока вы используете интерфейсно-ориентированное программирование, вы фактически используете режим моста.

Комбинированный режим

Создает впечатление, что клиент одинаково обрабатывает отдельные объекты и комбинации объектов, другими словами, метод типа, который также принимает свой собственный тип в качестве параметра. (Иными словами, методы типа, принимающие тот же тип)

Фэй Чао прошептал: «Из приведенного выше английского предложения мы можем узнать, что комбинированный режим часто используется для оптимизации рекурсивных операций. Например, в каждой компании есть система боссов и будут некоторые функции меню. Например, меню первого уровня имеет меню второго уровня, а меню второго уровня имеет меню третьего уровня. При удалении меню первого уровня нужно постоянно удалять подменю, поэтому можно попробовать этот шаблон проектирования. Короче говоря, вы можете попробовать этот шаблон проектирования везде, где есть каскадные операции.

шаблон декоратора

Динамически прикрепляет к объекту дополнительную функциональность, так что это также альтернатива созданию подклассов. Этот шаблон проектирования широко используется в JDK, ниже приведена лишь небольшая часть

Фей Чао прошептал: "Этот режим слишком широко используется. Наш часто используемый АОП имеет и динамический прокси, и аромат декоратора.

узор фасада

Предоставляет упрощенный интерфейс для набора компонентов, интерфейсов, абстракций или подсистем.

Фей Чао прошептал: «Журналы SLFJ, которые мы используем каждый день, — это фасадные журналы. Например, когда мы используем Dubbo, мы изо всех сил стараемся использовать фасадный режим для предоставляемых нами услуг, а затем службы вызывают различные службы для агрегации.

наилегчайший образец

Используйте кэширование для сокращения времени доступа к небольшим объектам

Фэй Чао мягко надавил: пока используется кеш, в основном используется режим наилегчайшего веса. Многие студенты говорят, что их проекты слишком низкие, и они не используют никаких шаблонов проектирования.Разве это не шутка?Вы используете карту для кэширования нескольких объектов, в основном используя идею Flyweight.

прокси-режим

Шаблон прокси используется для замены создания сложных или трудоемких объектов более простыми объектами.

Фэй Чао прошептал: Модель прокси широко используется, и в основном все известные всем фреймворки с открытым исходным кодом используют динамические прокси.

Создать схему

Абстрактный заводской узор

Шаблон абстрактной фабрики предоставляет протокол для создания серии связанных или независимых объектов без указания типа конкретных объектов. Это позволяет отделить приложения от конкретной реализации используемой платформы. Их легко найти в JDK и во многих фреймворках с открытым исходным кодом, таких как Spring. Все, что создает объект, но возвращает интерфейс или абстрактный класс, является шаблоном абстрактной фабрики. (любой метод, который используется для создания объекта, но по-прежнему возвращает интерфейс или абстрактный класс)

Фэй Чао прошептал: «Из английского можно сделать вывод, что этот режим можно использовать в сочетании с режимом стратегии».

режим строителя

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

Фэй Чао прошептал: «Этот сценарий, используемый в нашем бизнес-коде, слишком обширен. Например, в системе заказов есть большинство элементов, а объект заказа является сложным объектом, для этого мы можем использовать шаблон построителя.

заводской метод

Просто метод, который возвращает фактический тип.

Фэй Чао прошептал: «Это шаблон проектирования, который всем известен, поэтому я не буду его больше представлять».

режим прототипа

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

Фэй Чао прошептал: «Это шаблон проектирования, который вы считали непопулярным шаблоном проектирования, но на самом деле это неправильно, это очень популярный шаблон проектирования». Например, наш бизнес-код часто требует различных преобразований DTO, BO, DO и VO, по сути, мы можем обратиться к идее режима проектирования прототипа.

одноэлементный шаблон

Используется для обеспечения наличия только одного экземпляра класса. Другой способ, предложенный Джошуа Блохом в книге «Эффективная Java», заключается в использовании перечислений.

Фэй Чао прошептал: «В обычной разработке мы чаще всего используем синглтоны, потому что bean-компоненты Spring по умолчанию находятся на уровне синглетонов. Синглтон — это шаблон проектирования, который всем известен.

модель поведения

цепь ответственности

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

Фэй Чао мягко надавил:FilterДля ключевых слов в основном используется этот шаблон проектирования. В бизнес-коде используется слишком много сценариев, и этот шаблон проектирования в основном используется там, где используются перехватчики.

командный режим

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

Фэй Чао прошептал: «Командный режим используется чаще, он похож на режим стратегии. Вы можете поискать конкретные отличия. если используетсяActivitiДрузья движка рабочего процесса могут посмотреть исходный код внутри.Командный режим используется во многих местах.

Режим переводчика

Этот шаблон обычно описывает определение грамматики для языка и использование этой грамматики для интерпретации операторов в этом формате. (Этот шаблон обычно описывает определение грамматики для этого языка и использование этой грамматики для интерпретации операторов в этом формате.)

Фэй Чао мягко надавил: «Это относительно непопулярно, и Фей Чао не использовал его часто. Если вы использовали его, вы можете оставить сообщение и сказать Фэй Чао».

шаблон итератора

Предоставляет единый способ доступа к объектам в коллекции.

Фей Чао прошептал: «Студенты, работающие в группах промежуточного программного обеспечения и базовых фреймворков, могут часто использовать его, а бизнес-код используется нечасто, но такое использование в JDK очень классическое, вы можете взглянуть».

модель посредника

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

Фэй Чао мягко надавил: мне не нужно говорить больше, когда я вижу это описание, слишком много сценариев для бизнес-кодов. Например, когда вы используете MQ, вы фактически используете промежуточную модель. Поэтому Фей Чао неоднократно подчеркивал, что даже если это CRUD каждый день, внимание к Фей Чао для совместного обучения также может дать вашему проекту CRUD эффект улучшения красоты + фильтр (режим дизайна).

режим заметки

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

Фей Чао прошептал: "Это мало используется в бизнесе. По словам Фей Чао, один из сценариев - вы хотите кинуть данные в MQ, но MQ временно недоступен, затем вы временно сохраняете данные в БД, а затем опрашиваете сбрасывается на MQ. Если у вас есть сцена получше, оставьте сообщение и скажите Фей Чао.

Режим пустого объекта

Это позволяет вам абстрагироваться от обработки пустых объектов.

Фэй Чао прошептал: «Этот бизнес-код используется нечасто, но эти методы в JDK используются довольно часто.

Шаблон наблюдателя

Используется для предоставления компонентам гибкого способа широковещательной рассылки сообщений заинтересованным получателям.

Фэй Чао прошептал: Наш деловой кодекс обычно основан на Zookeeper в качестве наблюдателя. В основном, там, где используется ZK, используется режим наблюдателя, например, распределенные блокировки, такие как обнаружение службы.

режим состояния

Позволяет легко изменять поведение объекта во время выполнения на основе его внутреннего состояния.

Фэй Чао прошептал: «Это слишком широко используется в бизнес-коде, я не верю, что в вашей системе еще нет «состояния». Например, можно использовать наш общий статус заказа или различные статусы XX.

режим стратегии

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

Фэй Чао прошептал: «Это слишком высокая частота, и ее часто используют для оптимизации большого количестваif-else, Если вы не знаете этот шаблон дизайна, не говорите, что вы обратили внимание на публичный аккаунт Feichao, когда будете выходить на улицу!

Шаблон метода шаблона

Предоставляя подклассам возможность переопределять части метода, а не весь метод целиком, вы можете контролировать, какие подклассы операций должны переопределять.

Фэй Чао прошептал: Этот режим также очень высокочастотный. В бизнес-коде часто бывает много одинаковых частей. Мы можем создать абстрактный класс и подклассы, чтобы добиться дифференциации. Если вы еще этого не знаете, выполните быстрый поиск. Опять же, это очень высокая частота.

шаблон посетителя

Предоставляет удобный и поддерживаемый способ управления набором объектов. Он позволяет изменять или расширять поведение объекта без изменения объекта операции.

Фэй Чао прошептал: "Этот Фэй Чао используется нечасто. Если вы используете его в бизнес-коде, пожалуйста, оставьте сообщение и скажите Фэй Чао".

напиши в конце