JavaScript设想形式系列三:制作者形式

制作者形式

制作者形式(builder pattern)比较简朴,它属于建立型形式的一种,将一个庞杂的对象分解成多个简朴的对象来举行构建,将庞杂的构建层与示意层星散,使得雷同的构建历程能够建立差别的示意的形式就是制作者形式。

长处

  • 制作者形式的封装性很好,对象自身与构建历程解耦。
  • 制作者形式很轻易举行扩大。如果有新的需求,经由过程完成一个新的制作者类就能够完成。

实用场景

须要天生的对象具有庞杂得内部结构;且内部属性自身相互依赖

制作者形式的代码完成

制作者形式重要有4个部份:product产品类、Builder制作者类、Director批示者类、客户。

重要的流程是:
  1. 客户提出需求。
  2. 批示者依据用户需求,批示制作者去完成需求的各个部份。
  3. 制作者完成响应的部份。

我们来看一下响应的代码:
产品类为一辆加工的空壳汽车。

/**
 * 产品类:car 现在须要构建一辆车。
 */

function car () {
    this.name = '',
    this.number = '',
    this.wheel = '',
    this.engine = ''
}

接下来看一下制作者类:

/* 
*    制作者类,内里有特地担任各个部份的工人
*/
function carBuilder () {
    this.nameBuilder = function () {
        this.name = '很厉害的车'
    },
    this.numberBuilder = function () {
        this.number = '88888888'
    },
    this.wheelBuilder = function () {
        this.wheel =  '高等橡胶做的轮子'
    },
    this.engineBuilder = function () {
        this.engine =  '很厉害的引擎'
    },
    this.getCar = function () {
        var Car = new car()
        Car.name = this.name;
        Car.number= this.number;
        Car.wheel = this.wheel;
        Car.engine = this.engine;
        return Car;
    }
}

再这里我们能够看到各个部份的工人以及他们的事情,他们的各自的事情终究合并成一辆汽车。

批示者类:

/**
 *   批示者类,批示各个部份的工人事情
 */
function director () {
    this.action = function (builder) {
        builder.nameBuilder();
        builder.numberBuilder();
        builder.wheelBuilder();
        builder.engineBuilder();
    } 
}

末了就是使用要领:

/**
 *    使用要领
 */

var builder = new carBuilder();
var director = new director();
director.action(builder);
var Car = builder.getCar();
console.log(Car);

终究客户经由过程getCar要领得到了这辆车,而且不须要知道个中得制作细节。

总结

制作者形式重要用于“散布构建一个庞杂的对象”,它很轻易举行扩大。如果有新的需求,经由过程完成一个新的制作者类就能够完成,而且制作者形式解耦了对象自身与构建历程,使得我们不必体贴详细的制作历程。

    原文作者:holyZhengs
    原文地址: https://segmentfault.com/a/1190000014131022
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞