Найти тему

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

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

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

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

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

Давайте рассмотрим диаграмму паттерна Строитель

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

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

Читать продолжение с примером исходного кода…