stringtranslate.com

Шаблон строителя

Шаблон «строитель» — это шаблон проектирования , предназначенный для обеспечения гибкого решения различных проблем создания объектов в объектно-ориентированном программировании . Цель шаблона проектирования «Построитель» — отделить построение сложного объекта от его представления. Это один из шаблонов проектирования «Банды четырех» .

Обзор

Шаблон проектирования Builder — это один из шаблонов проектирования [1] , который описывает, как решать повторяющиеся проблемы проектирования в объектно-ориентированном программном обеспечении.

Шаблон проектирования Builder решает такие проблемы, как: [2]

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

Шаблон проектирования Builder описывает, как решать такие проблемы:

Класс (один и тот же процесс построения) может делегировать разные Builderобъекты для создания разных представлений сложного объекта.

Определение

Целью шаблона проектирования Builder является отделение конструкции сложного объекта от его представления. Таким образом, один и тот же процесс построения может создавать разные представления. [1]

Преимущества

Преимущества шаблона Builder включают в себя: [3]

Недостатки

К недостаткам шаблона Builder относятся: [3]

Состав

Класс UML и диаграмма последовательности

Пример класса UML и диаграммы последовательности для шаблона проектирования Builder. [4]

На приведенной выше диаграмме классов UML класс не создает и не собирает объекты and напрямую. Вместо этого термин относится к интерфейсу для построения (создания и сборки) частей сложного объекта, что делает независимость от того, какие конкретные классы создаются (какое представление создается). Класс реализует интерфейс путем создания и сборки объектов и . Диаграмма последовательности UML показывает взаимодействия во время выполнения: объект вызывает объект , который создает и собирает объект. После этого вызывается , который создает и собирает объект.DirectorProductA1ProductB1DirectorBuilderDirectorBuilder1BuilderProductA1ProductB1
DirectorbuildPartA()Builder1ProductA1DirectorbuildPartB()Builder1ProductB1

Диаграмма классов

Структура строителя
Структура строителя
Строитель
Абстрактный интерфейс для создания объектов (продукта).
Бетоностроитель
Обеспечивает реализацию для Builder. Это объект, способный создавать другие объекты . Конструирует и собирает детали для сборки объектов.

Примеры

Пример С # :

/// <summary> /// Представляет продукт, созданный разработчиком. /// </summary> public class Bicycle { public Bicycle ( string make , string model , string color , int height ) { Make = make ; Модель = модель ; Цвет = цвет ; Высота = высота ; }                          общедоступная строка Make { get ; набор ; } Публичная строка Модель { получить ; набор ; } Общественный ИНТ Высота { получить ; набор ; } Публичная строка Цвет { получить ; набор ; } }                           /// <summary> /// Абстракция строителя. /// </summary> публичный интерфейс IBicycleBuilder { Bicycle GetResult ();     строка Цвет { получить ; набор ; } Int Высота { получить ; набор ; } }           /// <summary> /// Реализация конструктора бетона. /// </summary> public class GTBuilder : IBicycleBuilder { public Bicycle GetResult () { return Height == 29 ? новый велосипед ( «GT» , «Лавина» , Цвет , Высота ) : null ; }                       публичная строка Цвет { получить ; набор ; } Общественный ИНТ Высота { получить ; набор ; } }             /// <сводка> /// Режиссер. /// </summary> общественный класс MountainBikeBuildDirector { частный IBicycleBuilder _builder ;      общественный MountainBikeBuildDirector ( строитель IBicycleBuilder ) { _builder = строитель ; }         общественный недействительный Construct () { _builder . Цвет = «Красный» ; _строитель . Высота = 29 ; }           общественный велосипед GetResult () { верните это . _строитель . ПолучитьРезультат (); } }   общественный класс Client { общественный недействительный DoSomethingWithBicycles () { вар директор = новый MountainBikeBuildDirector ( новый GTBuilder ()); // Директор контролирует поэтапное создание продукта и возвращает результат. директор . Построить (); Велосипед myMountainBike = директор . ПолучитьРезультат (); } }                   

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

Смотрите также

Рекомендации

  1. ^ ab Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес (1994). Шаблоны проектирования: элементы объектно-ориентированного программного обеспечения многократного использования . Эддисон Уэсли. стр. 97 и далее. ISBN 0-201-63361-2.{{cite book}}: CS1 maint: multiple names: authors list (link)
  2. ^ «Шаблон проектирования Builder - проблема, решение и применимость» . w3sDesign.com . Проверено 13 августа 2017 г.
  3. ^ ab «Указатель /archive/2010/winter/51023-1/presentations» (PDF) . www.classes.cs.uchicago.edu . Проверено 3 марта 2016 г.
  4. ^ «Шаблон проектирования Builder — структура и сотрудничество» . w3sDesign.com . Проверено 12 августа 2017 г.

Внешние ссылки