Идея паттерна Строитель(Builder)

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

Как я уже писал ранее, существует три вида паттернов проектирования:

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

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

Архитектура шаблона Builder

Строитель (Builder)

Строитель (Builder)

  • Builder — определяет интерфейс конструирования продукта по частям
  • Director — управляет процессом создания, не зная, какой продукт будет создан в результате
  • ConcreteBuilder — конкретный строитель, который создает только известный ему объект класса Product.

Логика работы Строителя

Давайте рассмотрим основную логику работы паттерна Строитель. Классическая реализация данного паттерна используется довольно редко. Большую популярность обрела реализация строителя на методах расширениях класса. Это позволяет динамически задавать большое количество свойств объекта, а если какие-либо свойства не задаются явно, то используются значения по умолчанию. К тому же такой способ задания свойств очень хорошо визуально воспринимается, что улучшает удобочитаемость кода и упрощает его отладку и дальнейшую модернизацию. В качестве примера будем использовать форматируемый с помощью html текст. С помощью методов расширения мы сможем при необходимости задавать цвет, размер и стиль шрифта, а так же задний фон и другие параметры отображения текста с помощью методов расширения. Давайте рассмотрим пример кода.

Реализация паттерна Строитель(Builder) на языке C#

Для начала создадим класс текста, в котором буду указаны все изменяемые свойства класса. Обратите внимание, что данный класс вместе со строителем специально вынесен в отдельную библиотеку. Его свойства не доступны для редактирования за пределами своей библиотеки, а доступ для конфигурированию свойств предоставляется через строителя. Здесь мы также устанавливаем значения по умолчанию для свойств.

Теперь переходим к реализации строителя. В нем мы определяем методы расширения для доступа к соответствующим свойствам. При необходимости контролируем входные данные.

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

Получаем следующий результат работы приложения.

Если сохранить данную разметку в HTML файл, можно проверить корректность разметки

Исходный код приложения доступен в репозитории github.

Также рекомендую изучить статью Паттерн Прототип (Prototype)

P.S. Присоединяйся в любой удобной для тебя социальной сети. Для меня очень важно оставаться с тобой на связи, ведь у меня есть еще много полезной информации о программировании для тебя, которой я хочу с тобой поделиться.

Вконтакте
Telegram
Facebook
Twitter
Одноклассники
Дзен
Google+

 
×
%d такие блоггеры, как: