多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# JavaScript 构建器模式教程 > 原文: [http://zetcode.com/javascript/builderpattern/](http://zetcode.com/javascript/builderpattern/) JavaScript 构建器模式教程展示了如何使用构建器模式在 JavaScript 中创建对象。 ## 构建器模式 构建器模式是一种设计模式,可为创建对象提供灵活的解决方案。 构建器模式将复杂对象的构造与其表示形式分开。 生成器模式通过提供逐步的方法,使用简单的对象来构建复杂的对象。 它属于创作模式。 ## 构建器模式示例 以下示例将构建器模式与`TaskBuilder`结合使用。 `task_creator.js` ```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`对象。 ```js let Task = function(name, description, finished, dueDate) { this.name = name; this.description = description; this.finished = finished; this.dueDate = dueDate; } ``` 这是一个`Task`对象。 它具有四个属性:`name`,`description`,`finished`和`dueDate`。 ```js return { setName: function (name) { this.name = name; return this; }, ... ``` `TaskBuilder`返回设置四个属性的函数。 请注意,每个函数都返回`this`,即对当前对象的引用。 这样,我们可以链接函数调用。 函数调用链称为流畅 API 。 ```js let task = new TaskBuilder().setName('Task A').setDescription('finish book') .setDueDate(new Date(2019, 5, 12)); console.log(task); ``` 我们使用`TaskBuilder`创建任务。 在本教程中,我们介绍了 JavaScript 中的构建器模式。 列出[所有 JavaScript 教程](/all/#js)。