Подтвердить что ты не робот

Шаблон StringBuilder и Builder

Я новичок в Design Patterns, поэтому у меня есть один вопрос о шаблоне Builder. Сегодня я слышал, что шаблон Builder отличается от класса StringBuilder в Java, С#. Я знаю, что основная цель шаблона Builder заключается в создании сложных объектов за несколько шагов... Я думаю, что это делает StringBuilder с помощью этого метода Append... Поэтому мне вряд ли удастся найти разницу...

Не могли бы вы сказать мне, есть ли какая-то разница, и если это... что это:)?

4b9b3361

Ответ 1

Похоже, вы можете ввести в заблуждение класс StringBuilder и шаблон проектирования Builder. На самом деле это две разные идеи.

StringBuilder - это класс в Java и . NET, который позволяет выполнять более строгие операции: (из MSDN)

Объект String неизменен. каждый время, когда вы используете один из методов в Класс System.String, вы создаете новый строковый объект в памяти, который требует нового распределения пространства для это новый объект. В ситуациях, когда вам необходимо выполнить повторную модификации строки, накладные расходы, связанные с созданием новый объект String может быть дорогостоящим. Класс System.Text.StringBuilder может быть используется, когда вы хотите изменить строку без создания нового объекта. Для пример, используя класс StringBuilder может повысить производительность, когда объединяя много строк в цикл.

Builder Pattern, с другой стороны, представляет собой шаблон проектирования, который представляет собой набор классов и/или интерфейсов, предназначенных для организации сложного кода:

Рисунок построителя - это программное обеспечение дизайн рисунок. Цель состоит в том, чтобы абстрактные этапы строительства объектов, чтобы разные реализации этих шагов могут построить различные представления объекты. Часто шаблон строителя используется для создания продуктов в соответствии с к составной структуре, структурной шаблон.

Метод Append StringBuilder просто добавляет больше символов в существующую строку. Нет созданных новых объектов (основная функция шаблона построителя), и не существует шаблона проектирования. Это один вызов метода для экземпляра одного объекта.

Ответ 2

  • Различные цели. String Builder помогает при построении String Construction, Builder отделяет построение объекта от его представления.
  • Разная структура. У String Builder есть два сотрудника, у шаблона Builder есть четыре сотрудника.

ad 1) Абстракции в создании String нет. Например, структура дерева представляет собой абстракцию, которая может быть представлена ​​объектами или XML файлом (реализация).

ad 2) При использовании объекта StringBuilder есть два соавтора:

  • Client
  • StringBuilder

При использовании Builder Pattern есть четыре соавтора:

  • Director - он сообщает Abstract Builder, каковы этапы построения (в случае древовидной структуры, шаги: создать корень, добавить дочерний элемент,...)
  • Abstract Builder - абстракция, используемая Director.
  • Concrete Builder - это конкретная реализация Abstract Builder (может быть XMLBuilder, ObjectBuilder,...)
  • Client - говорит Director, чтобы инициировать конструкцию.

Ответ 3

Анализируя документацию, могу сказать, что StringBuilder не использует соответствующий шаблон. Он использует Композитный шаблон. Шаблон Builder не собирает объект "вручную руками поэтапно" или в цикле. Он имеет готовые решения.