摘要:什么是單例模式單例模式是單例模式,也叫單子模式,是一種常用的軟件設(shè)計(jì)模式。在應(yīng)用這個(gè)模式時(shí),單例對象的類必須保證只有一個(gè)實(shí)例存在。
什么是單例模式
單例模式是單例模式,也叫單子模式,是一種常用的軟件設(shè)計(jì)模式。 在應(yīng)用這個(gè)模式時(shí),單例對象的類必須保證只有一個(gè)實(shí)例存在。 許多時(shí)候整個(gè)系統(tǒng)只需要擁有一個(gè)的全局對象,這樣有利于我們協(xié)調(diào)系統(tǒng)整體的行為。。(來源于維基百科)
1.創(chuàng)建單例模式,案例1:其實(shí)就是創(chuàng)建個(gè)對象,將我們的對象看做一個(gè)人
var person ={ height:1, name:"wy", callback:function(){ console.log(person.name); }, func:function(){ console.log("this is single function") } }
這種創(chuàng)建在業(yè)務(wù)中使用,這時(shí)候會有局限性,
1.可擴(kuò)展性差,如果以后在不同場景復(fù)用,如我們剛剛的類,如果要增加一個(gè)width屬性,
// person.width = 1; //新增了一個(gè)height屬性時(shí)候 person.height=2 //就會覆蓋了原來的屬性
例子明顯看的出來,相互影響,耦合度很高,在業(yè)務(wù)中使用很容易會導(dǎo)致覆蓋和重寫的可能
2.如果我們想一個(gè)類即能被繼承,又不會改變公用的屬性(方法一)
var person =function(){ this.height=1; this.name="wy" this.callback=function(){ console.log(person.name); }, this.func=function(){ console.log("this is single function") } } var girl = new person; var boy = new person; girl.height = 2; boy.height = 3; console.log(boy.height,girl.height);
這樣即可以實(shí)現(xiàn)多態(tài)和繼承,相互又是獨(dú)立的,但是在業(yè)務(wù)上使用會出現(xiàn)一個(gè)問題,就是名字重復(fù)時(shí)候,會導(dǎo)致所有屬性出問題,于是再次擴(kuò)展實(shí)現(xiàn)方式
(function(){ var Namespace = Namespace||{}; Namespace.person = function(){ this.height=1; this.name="wy" this.callback=function(){ console.log(person.name); }, this.func=function(){ console.log("this is single function") } } if(window) window.Namespace = Namespace||{}; })(window,undefined) var person = new Namespace.person; var person2 = new Namespace.person; console.log(person.height,Namespace,person)
使用命名空間對不同開發(fā)模塊做區(qū)分,能有效避免這種情況。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/80035.html
摘要:所以設(shè)計(jì)模式其實(shí)就是在前人各種踩坑經(jīng)驗(yàn)之上,總結(jié)出的各種開發(fā)套路。但更好的套路是使用單例模式它可以保證只創(chuàng)建一個(gè)對象第一次訪問時(shí)創(chuàng)建,之后訪問時(shí)直接返回已有對象,并提供全局的訪問。因此也有很多人對于設(shè)計(jì)模式的價(jià)值存在質(zhì)疑。 編程教室開了這么久,已經(jīng)有很多人從完全零基礎(chǔ)的小白成為了會寫代碼的菜鳥程序員,能夠自己獨(dú)立開發(fā)程序。不過到此階段,常常會遇到瓶頸,感覺功能可以實(shí)現(xiàn),但代碼看起來有些...
摘要:會一直完善下去,歡迎建議和指導(dǎo),同時(shí)也歡迎中用到了那些設(shè)計(jì)模式中用到了那些設(shè)計(jì)模式這兩個(gè)問題,在面試中比較常見。工廠設(shè)計(jì)模式使用工廠模式可以通過或創(chuàng)建對象。 我自己總結(jié)的Java學(xué)習(xí)的系統(tǒng)知識點(diǎn)以及面試問題,已經(jīng)開源,目前已經(jīng) 41k+ Star。會一直完善下去,歡迎建議和指導(dǎo),同時(shí)也歡迎Star: https://github.com/Snailclimb... JDK 中用到了那...
摘要:今天說一下,單一職責(zé)原則。比如,接口的地址本來已經(jīng)很完美了,但是你的是處女座最討厭處女座非要給路由添加幾個(gè)以保證后臺數(shù)據(jù)的安全。為了過年,我會選擇使用,因?yàn)椴恢捞幣院髸龀鍪裁瓷凳聛怼4藭r(shí)的使用動(dòng)態(tài)織入后,可以完美的解決處女座。 在設(shè)計(jì)模式中,有著幾條視為黃金原則,設(shè)計(jì)模式都是圍繞黃金原則,對代碼或者說是架構(gòu)設(shè)計(jì)做出一些相應(yīng)的調(diào)整,久而久之,GoF 4人組,發(fā)現(xiàn)其實(shí)有些設(shè)計(jì)思想可...
摘要:為此決定自研一個(gè)富文本編輯器。本文,主要介紹如何實(shí)現(xiàn)富文本編輯器,和解決一些不同瀏覽器和設(shè)備之間的。 對ES6Generator函數(shù)的理解 Generator 函數(shù)是 ES6 提供的一種異步編程解決方案,語法行為與傳統(tǒng)函數(shù)完全不同。 JavaScript 設(shè)計(jì)模式 ② 巧用工廠模式和創(chuàng)建者模式 我為什么把他們兩個(gè)放在一起講?我覺得這兩個(gè)設(shè)計(jì)模式有相似之處,有時(shí)候會一個(gè)設(shè)計(jì)模式不能滿...
閱讀 1992·2021-11-22 14:45
閱讀 2612·2021-10-12 10:11
閱讀 776·2021-09-22 10:02
閱讀 1233·2019-08-30 15:55
閱讀 1147·2019-08-30 15:54
閱讀 3258·2019-08-30 15:54
閱讀 1196·2019-08-29 17:16
閱讀 3093·2019-08-28 17:55