Хорошо, ребята, добро пожаловать в новую статью о шаблоне проектирования Builder.
Шаблон построителя следует использовать только для создания сложных объектов, например, когда создание объекта необходимо отделить от его сборки, например деревьев.
Для нашего рецепта необходимы следующие ингредиенты:
- Добавление интерфейса конструктора
Этот абстрактный базовый класс определяет все шаги, которые необходимо предпринять для правильного создания продукта. В нашем примере интерфейс IBuildMobile, - Создание конкретного класса строителя
Эти классы содержат функции для создания особенно сложного продукта. В нашем примере это класс Apple и класс OnePlus, - Реализация директора
Класс-директор управляет алгоритмом создания конечного продукта. Объект-директор вводит продукт через конструктор. Затем директор вызывает методы конкретного строителя в правильном порядке для создания продукта. По завершении процесса для возврата продукта можно использовать метод GetProduct объекта построителя. В нашем примере класс Mobile & method, который возвращает мобильный телефон, в нашем примере называется GetMobile ().
Шаблон построителя направлен на отделение построения сложного объекта от его представления, чтобы один и тот же процесс построения мог создавать разные представления.
Теперь вы, наверное, почесываете затылок, задаваясь вопросом, что, черт возьми, это было?
Вот то, что я пытался передать ... Шаблон построителя удаляет весь код построения или инициализации из класса объекта и абстрагирует его до интерфейса.
Он используется для пошагового построения сложного объекта, и на последнем этапе будет возвращен объект конечного продукта.
В ПОРЯДКЕ! Хватит разговоров! Давайте посмотрим, как будет выглядеть UML на примере, который мы собираемся разработать.
Давайте возьмем две реализации для мобильных телефонов: OnePlus и Apple, и пусть клиент будет беспокоиться только о вызове этих классов, а не о том, что есть в мобильном телефоне и как он должен это получить.
Теперь представьте, что вам нужно создать объект класса Mobile. У вас должны быть технические характеристики мобильного устройства, а также тип мобильного устройства (OnePlus или Apple) и бла-бла-бла.
Почему клиенту нужно обо всем этом беспокоиться?
Начнем с интерфейса IMobileRequirements. Он определяет все требования, которые должен иметь ваш мобильный телефон.
Теперь это конкретная реализация: класс MobileRequirements, который устанавливает все основные требования для мобильных устройств.
Теперь наш интерфейс конструктора: IBuildMobile
Конкретное представление IBuildMobile. В основном наши конкретные классы строителей.
первый бетонный класс OnePlus
Бетон второго класса Apple
Теперь наш финальный директор: класс Mobile.
Последним, как обычно, но не в последнюю очередь, является программа caller: class.
Посмотрим, что получится, когда клиенту понадобится телефон Apple:
и при выводе, когда клиенту нужен телефон Onepplus: Примечание: просто раскомментируйте приведенный выше код и запустите приложение.
Идеально и безупречно!
Резюме
В этой статье мы узнали
- Где шаблон строителя вписывается в более крупную картину шаблона дизайна.
- Как создать класс объекта и абстрагировать его конструктор в интерфейс.
- Как создавать и настраивать представления конкретных строителей.
- Роль класса-директора и управление общим процессом сборки.
Я надеюсь, что вы отошли от этого, по-настоящему поняв шаблон строителя и то, как его можно применить к вашим личным проектам в будущем.
Если вам понравилась статья, а я надеюсь, что она вам понравилась, пожалуйста, примените свои знания, чтобы оживить код в своих проектах.
Загрузите код отсюда: https://github.com/RikamCZ/Builder-Design-Pattern