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

資訊專欄INFORMATION COLUMN

JS 設(shè)計(jì)模式二(封裝)

SunZhaopeng / 960人閱讀

摘要:閉包實(shí)現(xiàn)封裝類靜態(tài)變量靜態(tài)方法正整數(shù)私有屬性年齡不是一個(gè)正整數(shù)一個(gè)只能創(chuàng)建個(gè)人測試靜態(tài)變量測試封裝效果測試靜態(tài)函數(shù)主要參考設(shè)計(jì)模式的例子總結(jié)可以看到這樣實(shí)現(xiàn)了封裝效果。

什么是封裝

封裝就是把一個(gè)對象保護(hù)起來,使其只提供定義的接口方法,而保護(hù)私有的變量。打個(gè)比方,游戲中的一個(gè)人物對象,它的經(jīng)驗(yàn)只有通過打死怪獸這個(gè)接口方法來增加。如果可以直接修改經(jīng)驗(yàn)就會(huì)直接影響到整個(gè)游戲的設(shè)定。所以這個(gè)時(shí)候經(jīng)驗(yàn)這個(gè)屬性就是一個(gè)需要保護(hù)的變量。

封裝之利

封裝保護(hù)了私有屬性,不用擔(dān)心這些屬性會(huì)被接口以外的方法以外的修改。更好的解耦。實(shí)現(xiàn)迪米特法則(最少知道原則)(Demeter Principle)

封裝之弊

私有方法無法做單元測試,只能對共有方法做單元測試,單元測試用例的設(shè)計(jì)可能需要對共有方法的覆蓋增加保證覆蓋越多的私有方法。靈活性降低。對需要封裝的對象做很好的理解才能實(shí)現(xiàn)別人調(diào)用時(shí)候需要的接口可以被獲取。

閉包實(shí)現(xiàn)封裝類
var Person = (function () {
  // 靜態(tài)變量
  var PersonCount = 0;
  // 靜態(tài)方法
  function checkage(age) {
    var r = /^+?[1-9][0-9]*$/;   //正整數(shù)
    return r.test(age);
  }

  return function (name, age) {
    // 私有屬性.
    var name, age;
    this.getName = function () {
      return name;
    }
    this.getAge = function () {
      return age;
    }
    this.setName = function (name) {
      name = name || "No Name";
    };
    this.setAge = function (age) {
      if (!checkage(age)) throw new Error("年齡不是一個(gè)正整數(shù)");
      age = age;
    }
    PersonCount++;
    if (PersonCount > 50) throw new Error("一個(gè)只能創(chuàng)建50個(gè)人");
    this.setName(name);
    this.setAge(age);
  }
})();
//測試靜態(tài)變量
/*
 var Persons = [];
 for (var i = 0; i < 51; i++) {
 Persons[i] = new Person(i, i + 1);
 console.log("name:" + Persons[i].getName() + "age:" + Persons[i].getName());
 }
 //*/
//測試封裝效果
/*
 var Test = new Person("111", "1");
 console.log(Test.name);
 //*/
//測試靜態(tài)函數(shù)checkage
//var TestAge =new Person("111","asd");

主要參考《javascript設(shè)計(jì)模式》的例子

總結(jié)

可以看到這樣實(shí)現(xiàn)了封裝效果。不過對于私有函數(shù)的測試。只能通過測試接口的用例囊括才能實(shí)現(xiàn)。對于測試的要求可能就變高了。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/79342.html

相關(guān)文章

  • javascript設(shè)計(jì)模式與開發(fā)實(shí)踐()- 封裝和原型模式

    摘要:對象會(huì)記住它的原型給對象提供了一個(gè)名為的隱藏屬性,某個(gè)對象的屬性默認(rèn)會(huì)指向它的構(gòu)造器的原型對象,即。我們通過代碼來驗(yàn)證再來實(shí)際上,就是對象跟對象構(gòu)造器的原型聯(lián)系起來的紐帶切記這句話,對未來理解原型鏈很有幫助。 封裝 封裝數(shù)據(jù) 在許多語言的對象系統(tǒng)中,封裝數(shù)據(jù)是由語法解析來實(shí)現(xiàn)的,這些語言也許提供了 private、public、protected 等關(guān)鍵字來提供不同的訪問權(quán)限。例如:j...

    luxixing 評(píng)論0 收藏0
  • Javascript 設(shè)計(jì)模式讀書筆記()——封裝,簡單的創(chuàng)建對象模式

    摘要:創(chuàng)建對象中,創(chuàng)建對象的基本模式有三種。因此,在設(shè)計(jì)構(gòu)造函數(shù)時(shí),需要進(jìn)行慎重考慮。因此在中,這種問題被稱作繼承破壞封裝。靜態(tài)成員每個(gè)只有一份,直接通過類對象進(jìn)行訪問。 什么是封裝 找工作時(shí)一些公司給了offer后我就想知道真正拿到手的是多少,畢竟賦稅繁重。但各種稅也好,五險(xiǎn)一金也好我實(shí)在是弄不清楚,于是我就會(huì)在網(wǎng)上的一些稅后收入計(jì)算器上進(jìn)行計(jì)算,只需要填寫一些基本信息,比如稅前收入,所...

    lentrue 評(píng)論0 收藏0
  • JavaScript學(xué)習(xí)總結(jié)()數(shù)組和對象部分

    摘要:屬性是一個(gè)值或一組值以數(shù)組或?qū)ο蟮男问?,是對象的成員。可以使用內(nèi)置構(gòu)造函數(shù)和創(chuàng)建包裝對象。因此下面的代碼將會(huì)使人很迷惑結(jié)果結(jié)果,此數(shù)組長度為應(yīng)該盡量避免使用數(shù)組構(gòu)造函數(shù)創(chuàng)建新數(shù)組。給數(shù)組對象添加返回?cái)?shù)組中最大元素值的方法。 對象部分 Object類型 Object 是一個(gè)無序的集合,可以存放任意類型對象,所有其他對象都繼承自這個(gè)對象。創(chuàng)建Object類型有兩種,一種是使用new運(yùn)算符,...

    Lsnsh 評(píng)論0 收藏0
  • 前端知識(shí)歸納

    摘要:繼承性子標(biāo)簽會(huì)繼承父標(biāo)簽樣式優(yōu)先級(jí)行內(nèi)樣式選擇器類選擇器標(biāo)簽選擇器通配符繼承機(jī)制創(chuàng)建了的元素中,在垂直方向上的會(huì)發(fā)生重疊。 技能考察: 一、關(guān)于Html 1、html語義化標(biāo)簽的理解; 結(jié)構(gòu)化的理解; 能否寫出簡潔的html結(jié)構(gòu); SEO優(yōu)化 a、理解:根據(jù)內(nèi)容的結(jié)構(gòu)化(內(nèi)容語義化),選擇合適的標(biāo)簽(代碼語義化)便于開發(fā)者閱讀和寫出更優(yōu)雅的代碼的同時(shí) 讓瀏覽器的爬蟲和...

    sixleaves 評(píng)論0 收藏0
  • 前端知識(shí)歸納

    摘要:繼承性子標(biāo)簽會(huì)繼承父標(biāo)簽樣式優(yōu)先級(jí)行內(nèi)樣式選擇器類選擇器標(biāo)簽選擇器通配符繼承機(jī)制創(chuàng)建了的元素中,在垂直方向上的會(huì)發(fā)生重疊。 技能考察: 一、關(guān)于Html 1、html語義化標(biāo)簽的理解; 結(jié)構(gòu)化的理解; 能否寫出簡潔的html結(jié)構(gòu); SEO優(yōu)化 a、理解:根據(jù)內(nèi)容的結(jié)構(gòu)化(內(nèi)容語義化),選擇合適的標(biāo)簽(代碼語義化)便于開發(fā)者閱讀和寫出更優(yōu)雅的代碼的同時(shí) 讓瀏覽器的爬蟲和...

    NotFound 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

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