美文网首页
设计模式js篇--建造者模式

设计模式js篇--建造者模式

作者: 我追求的小世界 | 来源:发表于2019-03-18 11:52 被阅读0次
一、定义

是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

主要流程:
客户提出需求→指挥者根据用户需求,指挥建造者去完成需求的各个部分→建造者完成相应的部分
主要有4个部分:product产品类、Builder建造者类、Director指挥者类、客户。

使用场景:
需要生成的对象具有复杂得内部结构;且内部属性本身相互依赖

与工厂模式的区别:
工厂模式:关注的是创建的结果,提供的是创建单个类的模式;
建造者模式:不仅得到了结果,同时也参与了创建的具体过程,适合用来创建一个复杂的复合对象。

二、举例

eg1: github上面原有的例子(https://github.com/sohamkamani/javascript-design-patterns-for-humans#-template-method),根据主要流程稍作了修改。

// 产品: 汉堡
class Burger {
    constructor(builder) {
        this.size = builder.size
        this.cheeze = builder.cheeze || false
        this.pepperoni = builder.pepperoni || false
        this.lettuce = builder.lettuce || false
        this.tomato = builder.tomato || false
    }
}

// 建造者:制作汉堡
class BurgerBuilder {
    constructor(size) {
        this.size = size
    }
    addPepperoni() {
        this.pepperoni = true
        return this
    }
    addLettuce() {
        this.lettuce = true
        return this
    }
    addCheeze() {
        this.cheeze = true
        return this
    }
    addTomato() {
        this.tomato = true
        return this
    }
    build() {
        return new Burger(this)
    }
}

// 直接使用
const burger = (new BurgerBuilder(14))
    .addPepperoni()
    .addLettuce()
    .addCheeze()
    .addTomato()
    .build()

// (按照4个部分来)指挥者:指挥各个工作
class Director () {
    this.action = (builder) => {
        builder.addPepperoni();
        builder.addLettuce();
        builder.addCheeze();
        builder.addTomato();
  }
}
// 客户使用方法
const burgerBuilder = new BurgerBuilder(14)
const director = new Director()
director.action(burgerBuilder)
var burger= burgerBuilder.build(); // 完成汉堡制作

相关文章

  • 设计模式js篇--建造者模式

    一、定义 是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 主要流程:客户提出需求→...

  • 十道前端面试题第【05】篇

    摘要:本篇是设计模式专题,分享了10个设计模式的JS示例代码——工厂模式、单例模式、原型模式、建造者模式、外观模式...

  • OkHttp设计模式剖析(二)责任链模式

    上一篇 OkHttp设计模式剖析(一)建造者模式 下一篇 OkHttp设计模式剖析(三)策略模式 OKHTTP...

  • 设计模式-建造篇(建造者模式)

    建造者模式 建造者:创建和提供实例,导演:管理建造出来的实例的依赖关系。 我们想要买汽车 - 奥迪A6,去了4S店...

  • Retrofit

    Retrofit设计模式 动态代理,装饰模式,建造者模式,抽象工厂模式,适配器模式 建造者模式创建Retrofit...

  • Android中涉及的模式

    我的Java设计模式-建造者模式 我的Java设计模式-观察者模式 重学设计模式之单例模式

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

  • 设计模式之建造者模式

    设计模式之建造者模式 1. 模式定义 建造者模式又可以成为生成器模式,它属于对象创建型模式。建造者模式将一个复杂对...

  • java设计模式--建造者模式

    java设计模式--建造者模式 建造者模式定义 建造者模式:是将复杂对象的构建与表示进行分离,使同样的构建过程会有...

网友评论

      本文标题:设计模式js篇--建造者模式

      本文链接:https://www.haomeiwen.com/subject/vmupmqtx.html