zoukankan      html  css  js  c++  java
  • 建造者模式

    建造者模式又称为生成期末数分布构建一个复杂对象,讲一个复杂的构建曾与其表示层分离

    在工厂模式中构建的是完整的个体,而且不关心构建的过程,只需要了解构建结果

    建造者模式:

    // 建造者,汽车部件厂家,提供具体零部件的生产
    function CarBuilder({ color = 'white', weight = 0 }) {
        this.color = color
        this.weight = weight
    }
    
    // 生产部件,轮胎
    CarBuilder.prototype.buildTyre = function(type) {
        switch (type) {
            case 'small':
                this.tyreType = '小号轮胎'
                this.tyreIntro = '正在使用小号轮胎'
                break
            case 'normal':
                this.tyreType = '中号轮胎'
                this.tyreIntro = '正在使用中号轮胎'
                break
            case 'big':
                this.tyreType = '大号轮胎'
                this.tyreIntro = '正在使用大号轮胎'
                break
        }
    }
    
    // 生产部件,发动机
    CarBuilder.prototype.buildEngine = function(type) {
        switch (type) {
            case 'small':
                this.engineType = '小马力发动机'
                this.engineIntro = '正在使用小马力发动机'
                break
            case 'normal':
                this.engineType = '中马力发动机'
                this.engineIntro = '正在使用中马力发动机'
                break
            case 'big':
                this.engineType = '大马力发动机'
                this.engineIntro = '正在使用大马力发动机'
                break
        }
    }
    
    /* 奔驰厂家,负责最终汽车产品的装配 */
    function benChiDirector(tyre, engine, param) {
        var _car = new CarBuilder(param)
        _car.buildTyre(tyre)
        _car.buildEngine(engine)
        return _car
    }
    
    // 获得产品实例
    var benchi1 = benChiDirector('small', 'big', { color: 'red', weight: '1600kg' })
    
    console.log(benchi1)
    
    // 输出:
    // {
    //   color: "red"
    //   weight: "1600kg"
    //   tyre: Tyre {tyreType: "小号轮胎", tyreIntro: "正在使用小号轮胎"}
    //   engine: Engine {engineType: "大马力发动机", engineIntro: "正在使用大马力发动机"}
    // }

    主要有以下概念:

    Director :指挥者,调用建造者中的不见具体实现进行部件装配,相当于整车组装厂,最终返回装配完毕的产品

    Builder: 建造者含有不同部件的生产方式给构建者调用,是部件真正的生产者,但没有部件的装配流程;

    product :产品 药房给访问者的复杂对象

  • 相关阅读:
    rgbdslam 源代码的实现
    键值对排序并MD5加密
    字符编码
    排序算法
    Bridge Pattern (桥接模式)
    Visitor Pattern 和 doubledispatch
    栈、队列、链表
    如何使用visio
    架构师论文
    英语写作句子
  • 原文地址:https://www.cnblogs.com/webcyh/p/11318647.html
Copyright © 2011-2022 走看看