dir.by  
  Поиск  
Программирование, разработка, тестирование
Паттерны, шаблоны проектирования | принципы ООП | рефакторинг кода
Строитель (Builder) это порождающий шаблон проектирования
  Посмотрели 2859 раз(а)    
 Строитель (Builder) это порождающий шаблон проектирования 
последнее обновление: 30 марта 2021
Строитель — паттерн, который позволяет создавать сложные объекты пошагово.
Как работает ?
Паттерн Строитель делает конструирование объекта за пределами своего собственного класса, поручив это дело отдельным объектам, называемым строителями.
Пример
  C#  
class Car
{}

interface Builder
{
     void Reset();
     void SetSeats(int count);
     void SetEngine(string info);
     void SetTripComputer(int id);
     void SetGPS(bool use);
}

class CarBuilder : Builder
{
     private Car _car;

     // очистить _car
     public virtual void Reset()     {_car. = ...}

     // Установить количество сидений
     public virtual void SetSeats(int count)     {_car. = ...}

     // Установить поданный двигатель
     public virtual void SetEngine(Engine engine) {_car. = ...}

     // Установить систему навигации
     public virtual void SetTripComputer(int id)     {_car. = ...}

     // Установить или снять GPS
     public virtual void SetGPS(bool use) {_car. = ...}

     void Car GetResult() {_car. = ...}
}

// Директор знает, в какой последовательности нужно заставлять
// работать строителя, чтобы получить ту или иную версию
// продукта. Заметьте, что директор работает со строителем через
// общий интерфейс, благодаря чему он не знает тип продукта,
// который изготовляет строитель.
class Director
{
     void ConstructSportsCar(Builder builder)
     {
          builder.Reset();
          builder.SetSeats(2);
          builder.SetEngine(new SportEngine());
          builder.SetTripComputer(true);
          builder.SetGPS(true);
     }
}

// Директор получает объект конкретного строителя от клиента
// (приложения). Приложение само знает, какого строителя нужно
// использовать, чтобы получить определённый продукт.
class Application
{
     void MakeCar()
     {
          var director = new Director()

          CarBuilder builder = new CarBuilder()
          director.ConstructSportsCar(builder)
          Car car = builder.GetResult()
     }
}
Применимость
Когда вы хотите избавиться от «телескопического конструктора».

Допустим, у вас есть один конструктор с десятью опциональными параметрами.
Его неудобно вызывать, поэтому вы создали ещё десять конструкторов с меньшим количеством параметров.
Всё, что они делают — это переадресуют вызов к базовому конструктору, подавая какие-то значения по умолчанию в параметры, которые пропущены в них самих.
  C#  
class Pizza
{
     Pizza(int size) { ... }
     Pizza(int size, boolean cheese) { ... }
     Pizza(int size, boolean cheese, boolean pepperoni) { ... }
     // ...
}
Паттерн Строитель позволяет собирать объекты пошагово, вызывая только те шаги, которые вам нужны.
А значит, больше не нужно пытаться «запихнуть» в конструктор все возможные опции продукта.
 
← Предыдущая тема
Прототип (Prototype) это порождающий шаблон проектирования
 
Следующая тема →
Стратегия (Strategy) это поведенческий шаблон проектирования
 
Ваши Отзывы ... комментарии ...
   
Вашe имя
Ваш комментарий (www ссылки может добавлять только залогиненный пользователь)

  Объявления  
  Объявления  
 
Введение
Что такое подкласс или дочерний класс или наследник класса? Что такое родительский класс ?
Принципы ООП
Что такое Объектно-ориентированное программирование? Принципы: абстрагирование, инкапсуляция, наследование, полиморфизм
Рефакторинг кода
Что такое рефакторинг кода ?
Шаблоны проектирования
Порождающие паттерны
Фабричный метод (Factory Method) это порождающий шаблон проектирования
Абстрактная фабрика (Abstract Factory) это порождающий шаблон проектирования
Одиночка (Singleton) это порождающий шаблон проектирования
Прототип (Prototype) это порождающий шаблон проектирования
Строитель (Builder) это порождающий шаблон проектирования

Паттерны поведения
Стратегия (Strategy) это поведенческий шаблон проектирования
S.O.L.I.D. (5 принципов проектирования программы)
Что такое SOLID ?
Single Responsibility Principle (Принцип единственной обязанности) SOLID проектирование
Open/Closed Principle (Принцип открытости/закрытости) SOLID проектирование

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика