建造者模式

建造者模式

解决方案:把一个对象分步骤创建出来
实现的功能分步骤单离出来
实例一:

 // ajax获取数据
       function getById(id, callback){
           ajax(id, url).then((reg) =>{
            callback()
           })
       }

       // 创建对象
       function createDom(dom, callback){
           let cDom = document.createElement(dom)
           callback(cDom)
       }
       
       // 2个结合在一起
       getById('1', function(){
        createDom('div',function(cDom){
            app.appendChild(cDom)
        })
       })

        // 把不同步骤要做的事分离出来 

应用一:

    //  比如简历
    //  有姓名 、 职位
    let Humen = function(name){
    //  姓名
        this.name = name || '保密'
    }
    Humen.prototype.getSkill = function(){
        return this.name
    }

    // 职位
    let Word = function(word){
// switch(word){
        // case 'code':
        //     this.word = '工程师'
        //     this.wordDesc = '每天沉醉于代码'
        //     break
        // case 'UI':
        //     this.word = '设计师'
        //     this.wordDesc = '设计是一种态度'
        //     break
        // case 'teach':
        //     this.word = '老师'
        //     this.wordDesc = '分离也是一种快乐'
        //     break
        // }
        

        // 对象取值代替判断
        let obj = {
            'code': function(){
                this.word = '工程师'
                this.wordDesc = '每天沉醉于代码'
            },
            'UI': function(){
                this.word = '设计师'
                this.wordDesc = '设计是一种态度'
            },
            'teach': function(){
                this.word = '老师'
                this.wordDesc = '分离也是一种快乐'
            }
        }
        
        // 判断obj里有没有这个值 如果有为真 obj[word].apply(this)执行返回是undefind 为假 , 运算符还会向下执行,1为真就停
        obj[word] && (obj[word].apply(this), 1) || (this.word = '没有该职位')

    }

    let resume = function(name, word){
        let _resume = new Humen(name)
        _resume.word = new Word(word)
        return _resume
    }

    console.log(resume('阿飞', 'code'))

你可能感兴趣的:(建造者模式)