Поймите шаблон Builder шаблонов проектирования за считанные секунды

Java Шаблоны проектирования
Поймите шаблон Builder шаблонов проектирования за считанные секунды

Есть чувства, есть галантерейные товары, поиск в WeChat【Третий принц Ао Бин] Подпишитесь на этого программиста, у которого есть кое-что.

эта статьяGitHub github.com/JavaFamilyВключено, и есть полные тестовые площадки, материалы и мой цикл статей для интервью с производителями первой линии.

Зачем изучать шаблоны проектирования? Каковы преимущества шаблонов проектирования?

  • Улучшить возможность просмотра исходного кода фреймворка
  • Улучшите свою способность разрабатывать сложный бизнес-код и код
  • Заложите прочную основу для будущих собеседований и карьерного роста

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

Сегодня мы поговорим о трех паттернах паттерна проектирования (творческий паттерн, поведенческий паттерн, структурный паттерн).Шаблон строителя в творческом шаблоне, также называемыйРежим строителя.

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

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

Что такое строитель? Каков его сценарий применения?

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

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

---------- Приведенное выше определение взято из книги «Красота шаблонов проектирования».

Чтобы углубить наше понимание, давайте возьмем блок-схему

Из рисунка видно, что строители в основном делятся на 4 роли:

  • Продукт (класс продукта): объект класса, который нам нужно сгенерировать специально
  • Построитель (абстрактный класс построителя): создайте различные атрибуты модуля для объектов класса, которые нам нужно сгенерировать, то есть: выставьте атрибуты класса продукта и скройте другие функции класса продукта.
  • ConcreteBuilder (класс строителя бетона): реализовать объект класса, который мы хотим сгенерировать.
  • Директор (класс директора): Определить, какие атрибуты модуля специфичны для построения объекта нашего класса.В практических приложениях эта роль не требуется, и она обрабатывается напрямую через клиент

Пример

В электронной коммерции много разных товаровобычные физические товары,Купоны электронных карт,Виртуальные обучающие видеоматериалыВсе они являются товарами, но их атрибуты разные: купоны электронных карт: уникальные коды купонов, обучающие видео: уникальные ссылки на видео и т. д.

Так как же нам достичь такого рода создания товаров?

Давайте сначала рассмотрим наиболее распространенный способ создания:

Сначала мы создаем базовый класс товаров Item:

Здесь мы видим, что в соответствии с типом запроса мы можем полностью создать тип продукта, который мы хотим, но невозможно, чтобы атрибут продукта имел только такие несколько атрибутов, так как же расширять их в будущем? Тогда этот код будет выглядеть раздутым и непростым в обслуживании.

Далее давайте посмотрим, как реализован шаблон билдера:

Шаг 1: Создайте наш абстрактный класс строителя. Здесь мы рассматриваем три абстрактных метода для определения различных типов товаров, мы вызываем разные методы для достижения идеи разделения

Шаг 2: Создайте класс конкретного строителя. правильноабстрактный класс строителяАбстрактный метод для реализации присваивания для достижения нужного нам результата.

Шаг 3: Создайте наш класс Director. Проинструктируйте нас, как создавать объекты, мы можем упростить это, в зависимости от конкретного сценария использования, чтобы определить это!

Наконец, давайте посмотрим на результаты наших тестов. Опустив класс директора, мы действительно можем построить нужные результаты. Поскольку я пишу тестовую демонстрацию, я не писал параметры. Вы можете вносить изменения в соответствии с вашими реальными сценариями приложения.

по сравнению с обычным письмомрежим строителяМетод написания делает этот код легко читаемым и легко расширяемым, а разные типы товаров достигают эффекта развязки.

Пример второй:

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

Итак, как мы это делаем?

PS: Функция товарного копирования является очень распространенной операцией в области электронной коммерции, которая упрощает операционные расходы для пользователей и улучшает физический осмотр пользователя. Технологии служат бизнесу, а бизнес определяет долгосрочные интересы компании

Мы создали ItemBuilder внутри для обработки нашей логики проверки. Конечно, мы можем использовать обычные методы get и set.

Увидев это, некоторые люди могут спросить, в чем разница между этим и нашим использованием методов get или set?

Объяснение: в основном для решения нашего задания в недопустимом состоянии

Недопустимое состояние относится к наличию зависимостей между атрибутами объекта, юридической проверкой и т. д. Если используется установленный метод, эта связь и проверка не будут проверяться, и могут быть недопустимые состояния, то есть два атрибута А и В. Это должны быть установлены одновременно, и оба обязательны, и тогда установленный метод может вызвать пропуски и т. д.

Суммировать

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

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

Ссылка: «Красота шаблонов проектирования»

Ладно, на этом все. Меня зовут Ао Бин. Чем больше вы знаете, тем больше вы не знаете. Увидимся в следующем выпуске.


Статья постоянно обновляется, вы можете искать в WeChat "Третий принц Ао Бин"Прочтите это в первый раз, ответьте [материал] Подготовленные мной материалы интервью и шаблоны резюме крупных заводов первой линии, эта статьяGitHub github.com/JavaFamilyОн был включен, и есть полные тестовые сайты для интервью с крупными заводами.Добро пожаловать в Star.