最近打算系統(tǒng)的學(xué)習(xí)javascript設(shè)計(jì)模式,以便自己在開(kāi)發(fā)中遇到問(wèn)題可以按照設(shè)計(jì)模式提供的思路進(jìn)行封裝,這樣可以提高開(kāi)發(fā)效率并且可以預(yù)先規(guī)避很多未知的問(wèn)題。
先從最基本的單例模式開(kāi)始。
什么是單例模式:
單例模式,從名字拆分來(lái)看,單指的是一個(gè),例是實(shí)例,意思是說(shuō)多次通過(guò)某個(gè)類創(chuàng)造出來(lái)實(shí)例始終只返回同一個(gè)實(shí)例,它限制一個(gè)類只能有一個(gè)實(shí)例。單例模式主要是為了解決對(duì)象的創(chuàng)建問(wèn)題。單例模式的特點(diǎn):
一個(gè)類只有一個(gè)實(shí)例
對(duì)外提供唯一的訪問(wèn)接口
在一些以類為核心的語(yǔ)言中,例如java,每創(chuàng)建一個(gè)對(duì)象就必須先定義一個(gè)類,對(duì)象是從類創(chuàng)建而來(lái)。js是一門(mén)無(wú)類(class-free)的語(yǔ)言,在js中創(chuàng)建對(duì)象的方法非常簡(jiǎn)單,不需要先定義類即可創(chuàng)建對(duì)象。
在js中,單例模式是一種常見(jiàn)的模式,例如瀏覽器中提供的window對(duì)象,處理數(shù)字的Math對(duì)象。