Builder jest to elastyczny wzorzec mający na celu budowanie skomplikowanych obiektów, krok po kroku co upraszcza cały proces. Wszelkie detale tworzenia obiektu są ukryte przed klientem. Poniżej przykład budowy zadania:
function TaskBuilder() {
let name, description, isDone;
return {
setName: function(name) {
this.name = name;
return this;
},
setDescription: function(description) {
this.description = description;
return this;
},
setDone: function(done) {
this.isDone = done;
return this;
},
build: function () {
return new Task(this.name, this.description, this.isDone);
}
}
Następnie tworzymy Task-a w następujący sposób:
let task = (new TaskBuilder()).setName("Zadanie 1")
.setDescription("opis").setDone(true).build();
console.log(task);
// {name: "Zadanie 1", description: "opis",
// isDone: true}