• 建造者模式


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

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

    建造者模式:

    // 建造者,汽车部件厂家,提供具体零部件的生产
    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 :产品 药房给访问者的复杂对象

  • 相关阅读:
    tcpdump 命令的常用选项:一
    Centos系统中 Systemd 的Unit文件配置说明
    如何使用PowerShell获取物理磁盘的信息
    tcpdump 命令的常用选项:二
    Google报告:大量被入侵的 Google Cloud 实例被用来挖掘加密货币
    Ubuntu中使用pdftk合并、分离PDF文档等操作
    tcpdump 命令的常用选项:三
    优麒麟Ubuntu Kylin 20.04 Pro SP1 上线
    为SSH登录设置电子邮件提醒
    图片上传并显示(兼容ie),图片大小判断
  • 原文地址:https://www.cnblogs.com/webcyh/p/11318647.html
Copyright © 2020-2023  润新知