javascript
JS 设计模式之初识(一)-单例模式
一、定義
設(shè)計(jì)模式的定義是:在面向?qū)ο筌浖O(shè)計(jì)過(guò)程中針對(duì)特定問(wèn)題的簡(jiǎn)潔而優(yōu)雅的解決 方案,通俗一點(diǎn)說(shuō),設(shè)計(jì)模式是在某種場(chǎng)合下對(duì)某個(gè)問(wèn)題的一種解決方案。如果再通俗一點(diǎn)說(shuō),設(shè)計(jì)模式就是給面向?qū)ο筌浖_發(fā)中的一些好的設(shè)計(jì)取個(gè)名字。也就是說(shuō)設(shè)計(jì)模式并不難,而只是一些目前公認(rèn)的解決某些問(wèn)題的最佳實(shí)現(xiàn)而已。
1. 單例模式
單例模式的定義是:保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。例如:線程池,全局緩存,瀏覽器window對(duì)象等,這些都只需要一個(gè)對(duì)象實(shí)例就足夠了。
1.1 實(shí)現(xiàn)單例模式
要實(shí)現(xiàn)單例模式也并不復(fù)雜,只要用一個(gè)變量來(lái)標(biāo)識(shí)是否已經(jīng)給某個(gè)類創(chuàng)建過(guò)實(shí)例,如果是,則在下一次獲取該類的實(shí)例的時(shí)候,直接返回已經(jīng)緩存好的實(shí)例, 否則創(chuàng)建并緩存這個(gè)實(shí)例。
1.單例模式實(shí)現(xiàn)一
// 單例模式實(shí)現(xiàn)一function SingleTon(name) {this.name = name;this.instance = null;}SingleTon.prototype.getName = function() {return this.name;}SingleTon.getInstance = function(name) {if (this.instance) {return this.instance;}return new SingleTon(name);} 復(fù)制代碼注意: 類(class)通過(guò)static關(guān)鍵字定義靜態(tài)方法。不能在類的實(shí)例上調(diào)用靜態(tài)方法,而應(yīng)該通過(guò)類本身調(diào)用。這些通常是實(shí)用程序方法,例如創(chuàng)建或克隆對(duì)象的功能
4.衍生, 使用閉包來(lái)封裝私有變量
// 使用閉包來(lái)封裝私有變量const user = (function() {let name = 'timo';let age = 22;return {getUserInfo: function() {return name + ' '+ age;}};})(); 復(fù)制代碼特別注意:let 和 const 聲明并不會(huì)綁定到全局的window對(duì)象上!!!而使用var聲明會(huì)自動(dòng)綁定到window
總結(jié):
單例模式是一種簡(jiǎn)單但非常實(shí)用的模式,特別是惰性單例技術(shù),在合適的時(shí)候才創(chuàng)建對(duì)象,并且只創(chuàng)建唯一的一個(gè)。
轉(zhuǎn)載于:https://juejin.im/post/5cfa1f2be51d45773d4685da
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的JS 设计模式之初识(一)-单例模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 上传图片时 , 返回 nginx 出现4
- 下一篇: ExtJS2.0实用简明教程 - Col