Шаблоны проектирования программного обеспечения

Шаблон проектирования Builder

Что это такое и как реализовать в JavaScript

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

Примеры сложных объектов

В качестве примера возьмем создание объекта User. Теперь у пользователя может быть много дополнительных полей, таких как имя, возраст, дата рождения, адрес, адрес электронной почты, разрешения и т. Д., Что делает его сложным объектом для создания для разных пользователей, потому что не каждый пользователь будет иметь всю эту информацию, связанную с их.

Или другой пример: вы заказываете новый персонализированный компьютер. Вам нужно будет указать, сколько оперативной памяти вам нужно, сколько памяти, тип хранилища, какая видеокарта должна быть, какая система охлаждения и т. Д. Эти спецификации будут разными для всех, кто заказывает новый индивидуальный ПК, который делает этот объект сложным для строительства.

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

Примеры

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

Без паттерна Строителя

Приведенный выше пример, вероятно, похож на то, что вы видели в прошлом. У вас есть простой класс, и вы передаете параметры конструктору для создания объекта. Нет ничего плохого в том, чтобы сделать это таким образом, но, как видите, довольно сложно угадать, какими должны быть третий, четвертый и последний параметры. Конечно, вы можете посмотреть параметры, которые принимает конструктор, но в большом проекте вы, вероятно, не будете создавать объект в том же файле.

Только представьте, если бы у пользователя было 20 или более полей, которые можно было бы установить. Без использования шаблона компоновщика нам пришлось бы передавать пустые строки '' или undefined для всех значений, которые не предоставил пользователь. Это очень быстро стало бы запутанным и запутанным.

Однако в этом примере всего один пользователь. Что делать, если вам нужно создать несколько разных пользователей, разные представления пользователей, каждый со своим собственным набором различных свойств. В этом случае вам нужно запомнить все параметры или перемещаться вперед и назад, чтобы увидеть, какое значение соответствует какому параметру.

Давайте теперь посмотрим, как шаблон Builder помогает в решении этой проблемы.

С помощью паттерна Строитель

Шаблон Builder позволяет нам создать класс с методами для каждого свойства, которое будет иметь объект. Взяв тот же пример User, класс Builder будет иметь отдельный метод для имени, возраста, dob, электронной почты и т. Д., И каждый метод будет устанавливать значение свойства для объекта User.

Это сбивает с толку? На самом деле это довольно просто, давайте взглянем на следующий пример.

Сейчас может показаться, что это намного больше кода, но я хочу, чтобы вы взглянули на положительные стороны этого подхода. Вам нужно только заранее потратить немного времени на создание класса Builder, но позже, когда вы будете создавать разные User объекты, вам не нужно запоминать все различные параметры, которые принимает класс User.

Возвращая this из каждого метода, вы можете связать вызовы методов вместе для создания вашего сложного объекта. Вы просто вызываете различные методы класса UserBuilder и передаете значения, которые нужны пользователю.

Это делает создание различных представлений User намного проще, понятнее и декларативнее.

Вывод

Вот и все, что касается паттерна Строителя.

В этом посте вы узнали о преимуществах использования шаблона Builder и о том, как вы можете реализовать свой собственный, чтобы упростить чтение и понимание кода. Если вы видите, что вы добавляете слишком много необязательных параметров в конструктор, это означает, что вы, вероятно, создаете сложный объект и, возможно, вам необходимо рассмотреть шаблон проектирования для создания этого объекта.

Есть вопросы, связанные с тем, что мы обсуждали в этом посте? Не стесняйтесь спрашивать все, что связано с комментариями.

Что же, пока это все. До следующего раза, мир ✌️