簡(jiǎn)述JS的工廠模式

var 碼農(nóng)={
      ID:1蓝谨,
      具備技能:[java,javascript,php,html,css ],
      初始頭發(fā)數(shù):n灌具,
      寫代碼:function(){/*搬磚中,n=n-1*/}譬巫,
      修電腦:function(){/*強(qiáng)行修電腦*/}稽亏,
};
AI.制造碼農(nóng)(碼農(nóng))缕题;

以上是我打算制造一個(gè)機(jī)器人碼農(nóng)截歉,那么它在計(jì)算機(jī)里面的大概狀態(tài)就是這個(gè)樣子,包含的屬性包括:ID烟零,具備技能瘪松,初始頭發(fā)數(shù),寫代碼(行為)锨阿,修電腦(行為)宵睦。
如果我要制造100個(gè)前端的碼農(nóng)呢?那么比較粗糙的方法如下:

var 碼農(nóng)們=[],碼農(nóng)墅诡;
for(var i=0;i<100;i++){
     碼農(nóng)={
      ID:i壳嚎,
      具備技能:[javascript,html,css ],
      初始頭發(fā)數(shù):n,
      寫代碼:function(){/*搬磚中烟馅,n=n-1*/}说庭,
      修電腦:function(){/*強(qiáng)行修電腦*/},
}
碼農(nóng)們.push(碼農(nóng))郑趁;
}刊驴;
AI.批量制造(碼農(nóng)們);

上面這種寫法會(huì)產(chǎn)生一個(gè)很大的問(wèn)題:每制造一個(gè)碼農(nóng)寡润,[寫代碼]和[修電腦]這兩個(gè)函數(shù)就會(huì)運(yùn)行一次捆憎,制造一百個(gè)就要運(yùn)行一百次,兩個(gè)函數(shù)就需要內(nèi)存開辟兩百次梭纹。因?yàn)檫@兩種行為對(duì)于這一百個(gè)碼農(nóng)都是一樣的躲惰,那么可以把這兩個(gè)行為各自引用一個(gè)函數(shù)就可以了,沒必要重復(fù)一百次变抽。[具備技能]這一欄因?yàn)槲覀冃枰氖乔岸舜a農(nóng)礁扮,所以也是技能一樣的,不需要?jiǎng)?chuàng)建一百次瞬沦。這樣就會(huì)大大減少內(nèi)存的占有。
那么對(duì)于多個(gè)對(duì)象具有一些相同屬性的時(shí)候雇锡,比較有效的方式是把相同的部分放到對(duì)象的prototype里面逛钻。代碼如下:

var 前端碼農(nóng)原型={
      具備技能:[javascript,html,css ],
      寫代碼:function(){/*搬磚中锰提,n=n-1*/}曙痘,
      修電腦:function(){/*強(qiáng)行修電腦*/},
}
var 碼農(nóng)們=[]立肘,碼農(nóng);
for(var i=0;i<100;i++){
碼農(nóng)={
ID=i边坤,
初始頭發(fā)數(shù)=n
}
碼農(nóng).__proto__ =前端碼農(nóng)原型;
碼農(nóng)們.push(碼農(nóng))谅年;
}
AI.批量制造(碼農(nóng)們)茧痒;

對(duì)上面代碼進(jìn)行一下優(yōu)化:

var 前端碼農(nóng)原型={
      具備技能:[javascript,html,css ],
      寫代碼:function(){/*搬磚中融蹂,n=n-1*/}旺订,
      修電腦:function(){/*強(qiáng)行修電腦*/},
}
function 碼農(nóng)(ID){
     var 臨時(shí)對(duì)象={}超燃;
     臨時(shí)對(duì)象.__proto__ =前端碼農(nóng)原型区拳;
     臨時(shí)對(duì)象.ID=ID;
     臨時(shí)對(duì)象.n=n;
    return 臨時(shí)對(duì)象;
}

//然后對(duì)以上代碼進(jìn)行封裝后,就可以隨時(shí)隨地制造需要的AI碼農(nóng)了:

var 碼農(nóng)們=[]意乓,碼農(nóng)樱调;
 for(var i=0;i<需要的數(shù)量;i++){
     碼農(nóng)們.push(碼農(nóng)(i));
}
AI.批量制造(碼農(nóng)們);

上面封裝起來(lái)的這個(gè)方法,就是所謂的工廠模式(Factory Pattern)。它的主要作用就是解決創(chuàng)建多個(gè)相似對(duì)象過(guò)程中簡(jiǎn)化實(shí)現(xiàn)的過(guò)程笆凌,同時(shí)也可以減少每種對(duì)象所需的代碼量以及內(nèi)存占用圣猎。
簡(jiǎn)單來(lái)說(shuō):工廠模式就是一個(gè)函數(shù)里面返回一個(gè)對(duì)象,作用就是批量生產(chǎn)菩颖,效果就是減少代碼和內(nèi)存样漆。
雖然工廠模式的優(yōu)點(diǎn)很突出,但根據(jù)《JavaScript 高級(jí)程序設(shè)計(jì)》144頁(yè)的描述:“卻沒有解決對(duì)象識(shí)別的問(wèn)題”晦闰。這句話是什么意思作為js小白的我還是一臉懵逼的放祟,但“構(gòu)造函數(shù)模式”貌似解決了這個(gè)問(wèn)題。
構(gòu)造函數(shù)模式即在代碼里加個(gè)”new“呻右。至于new的原理和new與工廠模式之間的差異跪妥,回頭我再研究研究,敬請(qǐng)期待声滥。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末眉撵,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子落塑,更是在濱河造成了極大的恐慌纽疟,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件憾赁,死亡現(xiàn)場(chǎng)離奇詭異污朽,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)龙考,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門蟆肆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人晦款,你說(shuō)我怎么就攤上這事炎功。” “怎么了缓溅?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵蛇损,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我坛怪,道長(zhǎng)州藕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任酝陈,我火速辦了婚禮床玻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘沉帮。我一直安慰自己锈死,他們只是感情好贫堰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著待牵,像睡著了一般其屏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缨该,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天偎行,我揣著相機(jī)與錄音,去河邊找鬼贰拿。 笑死蛤袒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的膨更。 我是一名探鬼主播妙真,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼荚守!你這毒婦竟也來(lái)了珍德?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤矗漾,失蹤者是張志新(化名)和其女友劉穎锈候,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體敞贡,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泵琳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嫡锌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡琳钉,死狀恐怖势木,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情歌懒,我是刑警寧澤啦桌,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站及皂,受9級(jí)特大地震影響甫男,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜验烧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一板驳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧碍拆,春花似錦若治、人聲如沸慨蓝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)礼烈。三九已至,卻和暖如春婆跑,著一層夾襖步出監(jiān)牢的瞬間此熬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工滑进, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留犀忱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓郊供,卻偏偏與公主長(zhǎng)得像峡碉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子驮审,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 工廠模式類似于現(xiàn)實(shí)生活中的工廠可以產(chǎn)生大量相似的商品鲫寄,去做同樣的事情,實(shí)現(xiàn)同樣的效果;這時(shí)候需要使用工廠模式疯淫。簡(jiǎn)單...
    舟漁行舟閱讀 7,761評(píng)論 2 17
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法地来,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法熙掺,繼承相關(guān)的語(yǔ)法未斑,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 31,632評(píng)論 18 399
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,139評(píng)論 25 707
  • 關(guān)于寫作 ——致自己 這是“得到實(shí)踐小組”開始兩年之...
    那頭蝸牛閱讀 298評(píng)論 0 1
  • 清晨 小樹林 我來(lái)了 蝴蝶醒了 你走了 我藏了起來(lái) 你別找我 我不想你
    辛安小閱讀 864評(píng)論 34 41