成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

談?wù)凧S設(shè)計(jì)模式和應(yīng)用場景一(單例模式)

MSchumi / 797人閱讀

摘要:什么是單例模式單例模式是單例模式,也叫單子模式,是一種常用的軟件設(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

相關(guān)文章

  • 寫代碼也有“套路”-談?wù)?/em>設(shè)計(jì)模式

    摘要:所以設(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),但代碼看起來有些...

    tain335 評論0 收藏0
  • 面試官:“談?wù)?/em>Spring中都用到了那些設(shè)計(jì)模式?”。

    摘要:會一直完善下去,歡迎建議和指導(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 中用到了那...

    Astrian 評論0 收藏0
  • 職責(zé)原則之模式的黃金法則

    摘要:今天說一下,單一職責(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ì)思想可...

    GeekQiaQia 評論0 收藏0
  • H5學(xué)習(xí)

    摘要:為此決定自研一個(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ì)模式不能滿...

    aristark 評論0 收藏0

發(fā)表評論

0條評論

MSchumi

|高級講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<