JavaScript Builder 模式教程
最后修改于 2023 年 10 月 18 日
在本文中,我们将展示如何使用 Builder 模式在 JavaScript 中创建对象。
Builder 模式
Builder 模式 是一种设计模式,用于提供创建对象的灵活解决方案。Builder 模式将复杂对象的构建与其表示分离开来。
Builder 模式通过提供一种逐步的方法,使用简单对象构建复杂对象。它属于创建型模式。
Builder 模式示例
以下示例使用 TaskBuilder 实现 Builder 模式。
task_creator.js
let Task = function(name, description, finished, dueDate) {
this.name = name;
this.description = description;
this.finished = finished;
this.dueDate = dueDate;
}
let TaskBuilder = function () {
let name;
let description;
let isFinished = false;
let dueDate;
return {
setName: function (name) {
this.name = name;
return this;
},
setDescription: function (description) {
this.description = description;
return this;
},
setFinished: function (finished) {
this.finished = finished;
return this;
},
setDueDate: function (dueDate) {
this.dueDate = dueDate;
return this;
},
build: function () {
return new Task(name, description, isFinished, dueDate);
}
};
};
let task = new TaskBuilder().setName('Task A').setDescription('finish book')
.setDueDate(new Date(2019, 5, 12));
console.log(task);
在这个例子中,我们有一个 TaskBuilder,它生成 Task 对象。
let Task = function(name, description, finished, dueDate) {
this.name = name;
this.description = description;
this.finished = finished;
this.dueDate = dueDate;
}
这是一个 Task 对象。它有四个属性:name, description, finished, 和 dueDate。
return {
setName: function (name) {
this.name = name;
return this;
},
...
TaskBuilder 返回设置这四个属性的函数。请注意,每个函数都返回 this,即对当前对象的引用。这样我们就可以链式调用函数。这种函数调用链被称为 流畅 API。
let task = new TaskBuilder().setName('Task A').setDescription('finish book')
.setDueDate(new Date(2019, 5, 12));
console.log(task);
我们使用 TaskBuilder 创建一个任务。
来源
在本文中,我们介绍了 JavaScript 中的 Builder 模式。