javascript設(shè)計(jì)模式——建造者模式

特點(diǎn):工廠模式的特點(diǎn)是創(chuàng)建的結(jié)果都是一個(gè)完整的個(gè)體,我們對(duì)創(chuàng)建過(guò)程不得而知,我們只了解得到的創(chuàng)建結(jié)果對(duì)象。而建造者模式中我們關(guān)心的是對(duì)象的創(chuàng)建過(guò)程,因此我們通常將創(chuàng)建對(duì)象的類模塊化,這樣使被創(chuàng)建的類的每一個(gè)模塊都可以得到靈活的運(yùn)用與高質(zhì)量的復(fù)用。

實(shí)現(xiàn):創(chuàng)建一位應(yīng)聘者,分別有基礎(chǔ)信息類(技能和愛(ài)好),姓名解析類(分隔FirstName和LastName)和期望職位類(職位名稱,職位描述)

Human類

    var Human = function(param) {
      // 技能
      this.skill = param && param.skill || '保密'
      // 興趣愛(ài)好
      this.hobby = param && param.hobby || '保密'
    }
    Human.prototype = {
      getSkill: function() {
        return this.skill
      },
      getHobby: function() {
        return this.hobby
      }
    }

姓名處理類

    var Named = function(name) {
      var that = this;
      (function(name, that) {
        that.wholeName = name
        if(name.indexOf(' ') > -1) {
          that.FirstName = name.slice(0, name.indexOf(' '))
          that.secondName = name.slice(name.indexOf(' '))
        }
      })(name, that)
    }

職位處理類

    var Work = function(work) {
      var that = this;
      (function(work, that){
        switch(work) {
          case 'code':
            that.work = '工程師'
            that.workDescript = '每天擼代碼'
            break
          case 'UI':
            that.work = '設(shè)計(jì)師'
            that.workDescript = '畫畫畫'
            break
          default:
            that.work = work
            that.workDescript = '不知道這個(gè)職業(yè)'
        }
      })(work, that)
    }
    Work.prototype.changeWork = function(work) {
      this.work = work
    }
    Work.prototype.changeDescript = function(setence) {
      this.workDescript = setence
    }

應(yīng)聘者創(chuàng)建類

    var Person = function(name, work) {
      var _person = new Human()
      _person.name = new Named(name)
      _person.work = new Work(work)
      return _person
    }

執(zhí)行結(jié)果

    var zhengguorong = new Person('zheng guorong', 'code')
    console.log(zhengguorong.skill) // 保密
    console.log(zhengguorong.name.FirstName) // zheng
    console.log(zhengguorong.work.workDescript) // 每天擼代碼
    zhengguorong.work.changeWork('UI')
    console.log(zhengguorong.work.work) // UI
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 接觸前端兩三個(gè)月的時(shí)候,那時(shí)候只是聽(tīng)說(shuō)設(shè)計(jì)模式很重要,然后我就去讀了一本設(shè)計(jì)模式的書,讀了一部分,也不知道這些設(shè)計(jì)...
    艱苦奮斗的侯小憨閱讀 3,203評(píng)論 2 39
  • 在異城懷念另一座城的味道, 憶起了誰(shuí),亦或者, 忽略了誰(shuí)。 空氣中調(diào)合著我情緒中的模糊分子, 如同高腳杯中的曼哈頓...
    Kevin3R閱讀 238評(píng)論 0 2
  • 寫在前面的話:我的本科來(lái)自一個(gè)很普通的一本院校,甚至跟別人提起來(lái)壓根都沒(méi)有聽(tīng)說(shuō)過(guò),大學(xué)之前一直有名校情結(jié),無(wú)奈沒(méi)能...
    遠(yuǎn)方_先生閱讀 10,902評(píng)論 50 140
  • 今天我們表演節(jié)目,媽媽說(shuō)老師不讓家長(zhǎng)去,所以我媽媽沒(méi)去,別人給我化了妝,就去演節(jié)目了,我們表演的節(jié)目叫《我驕傲,我...
    徐振恒閱讀 272評(píng)論 0 0

友情鏈接更多精彩內(nèi)容