# 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)。