zhangdizhangdi

建造者模式

定义

建造者模式(builder pattern),将一个复杂的对象分解成多个简单的对象来进行构建。

实现

js
function Shop() {
  this.construct = function (builder) {
    builder.step1()
    builder.step2()
    return builder.get()
  }
}

function CarBuilder() {
  this.car = null

  this.step1 = function () {
    this.car = new Car()
  }

  this.step2 = function () {
    this.car.addParts()
  }

  this.get = function () {
    return this.car
  }
}

function TruckBuilder() {
  this.truck = null

  this.step1 = function () {
    this.truck = new Truck()
  }

  this.step2 = function () {
    this.truck.addParts()
  }

  this.get = function () {
    return this.truck
  }
}

function Car() {
  this.doors = 0

  this.addParts = function () {
    this.doors = 4
  }

  this.say = function () {
    console.log('I am a ' + this.doors + '-door car')
  }
}

function Truck() {
  this.doors = 0

  this.addParts = function () {
    this.doors = 2
  }

  this.say = function () {
    console.log('I am a ' + this.doors + '-door truck')
  }
}

function run() {
  var shop = new Shop()
  var carBuilder = new CarBuilder()
  var truckBuilder = new TruckBuilder()
  var car = shop.construct(carBuilder)
  var truck = shop.construct(truckBuilder)

  car.say()
  truck.say()
}

run()
执行结果
I am a 4-door car
I am a 2-door truck

参考