国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

javascript常見(jiàn)設(shè)計(jì)模式

crelaber / 2504人閱讀

摘要:設(shè)計(jì)模式軟件設(shè)計(jì)過(guò)程中針對(duì)特定問(wèn)題的簡(jiǎn)潔而優(yōu)雅的解決方案單例模式單例模式的定義保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。通過(guò)中介者模式可以解除對(duì)象與對(duì)象之間的緊耦合關(guān)系。

設(shè)計(jì)模式:軟件設(shè)計(jì)過(guò)程中針對(duì)特定問(wèn)題的簡(jiǎn)潔而優(yōu)雅的解決方案
1.單例模式

單例模式的定義:保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。實(shí)現(xiàn)的方法為先判斷實(shí)例存在與否,如果存在則直接返回,如果不存在就創(chuàng)建了再返回,這就確保了一個(gè)類只有一個(gè)實(shí)例對(duì)象。
適用場(chǎng)景:實(shí)現(xiàn)一個(gè)單一對(duì)象,比如彈窗,無(wú)論被創(chuàng)建多少次,只應(yīng)該有一個(gè)實(shí)例對(duì)象。

class Modal {
    constructor(title, content) {
        this.title = title;
        this.content = content;
    }
}

const getModal = (function () {
    let instance = null;
    return function () {
        if (!instance) {
            instance = new Modal("標(biāo)題", "文本內(nèi)容");
        }
        return instance;
    }
})();

let a = getModal();
let b = getModal();

console.log(a === b); // true
2. 策略模式

策略模式的目的就是將算法的使用算法的實(shí)現(xiàn)分離開(kāi)來(lái)。
策略模式至少由兩部分組成:
1.策略類:策略類封裝了具體的算法,并負(fù)責(zé)具體的計(jì)算過(guò)程,是可變的;
2.環(huán)境類:環(huán)境類接受客戶的請(qǐng)求,隨后將請(qǐng)求委托給某一個(gè)策略類,不可變;

/*策略類*/
var levelOBJ = {
    "A": function(money) {
        return money * 4;
    },
    "B" : function(money) {
        return money * 3;
    },
    "C" : function(money) {
        return money * 2;
    } 
};
/*環(huán)境類*/
var calculateBouns =function(level,money) {
    return levelOBJ[level](money);
};
console.log(calculateBouns("A",10000)); // 40000
3. 代理模式

代理模式的定義:為一個(gè)對(duì)象提供一個(gè)代用品或占位符,以便控制對(duì)它的訪問(wèn)。
圖片懶加載就是一種典型有用場(chǎng)景:

function LazyImg() {}
LazyImg.prototype.getImg = function () {
    var imgNode = document.createElement("img");
    document.body.appendChild(imgNode);
    imgNode.src = "./fake.png";
    return imgNode;
}
LazyImg.prototype.setImg = function (src) {
    var imgNode = this.getImg();
    var img = new Image();
    img.onload = function() {
        imgNode.src = this.src;
    }
    img.src = src;
}

var pic = new LazyImg();

cx.setImg("./rel.png");
4. 中介者模式

中介者模式的定義:通過(guò)一個(gè)中介者對(duì)象,其他所有的相關(guān)對(duì)象都通過(guò)該中介者對(duì)象來(lái)通信,而不是相互引用,當(dāng)其中的一個(gè)對(duì)象發(fā)生改變時(shí),只需要通知中介者對(duì)象即可。通過(guò)中介者模式可以解除對(duì)象與對(duì)象之間的緊耦合關(guān)系。
現(xiàn)實(shí)生活中,航線上的飛機(jī)只需要和機(jī)場(chǎng)的塔臺(tái)通信就能確定航線和飛行狀態(tài),而不需要和所有飛機(jī)通信。同時(shí)塔臺(tái)作為中介者,知道每架飛機(jī)的飛行狀態(tài),所以可以安排所有飛機(jī)的起降和航線安排。

5.裝飾者模式

裝飾者模式的定義:在不改變對(duì)象自身的基礎(chǔ)上,在程序運(yùn)行期間給對(duì)象動(dòng)態(tài)地添加方法。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/105826.html

相關(guān)文章

  • JavaScript常見(jiàn)設(shè)計(jì)模式整理

    摘要:開(kāi)發(fā)中,我們或多或少地接觸了設(shè)計(jì)模式,但是很多時(shí)候不知道自己使用了哪種設(shè)計(jì)模式或者說(shuō)該使用何種設(shè)計(jì)模式。本文意在梳理常見(jiàn)設(shè)計(jì)模式的特點(diǎn),從而對(duì)它們有比較清晰的認(rèn)知。 showImg(https://segmentfault.com/img/remote/1460000014919705?w=640&h=280); 開(kāi)發(fā)中,我們或多或少地接觸了設(shè)計(jì)模式,但是很多時(shí)候不知道自己使用了哪種設(shè)...

    Nosee 評(píng)論0 收藏0
  • 前端每周清單半年盤點(diǎn)之 JavaScript

    摘要:前端每周清單專注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開(kāi)發(fā)者了解一周前端熱點(diǎn)分為新聞熱點(diǎn)開(kāi)發(fā)教程工程實(shí)踐深度閱讀開(kāi)源項(xiàng)目巔峰人生等欄目。背后的故事本文是對(duì)于年之間世界發(fā)生的大事件的詳細(xì)介紹,闡述了從提出到角力到流產(chǎn)的前世今生。 前端每周清單專注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開(kāi)發(fā)者了解一周前端熱點(diǎn);分為新聞熱點(diǎn)、開(kāi)發(fā)教程、工程實(shí)踐、深度閱讀、開(kāi)源項(xiàng)目、巔峰人生等欄目。歡迎...

    Vixb 評(píng)論0 收藏0
  • [總結(jié)貼] 十個(gè) JavaScript 中易犯的小錯(cuò)誤

    摘要:但是在中,的生命還會(huì)繼續(xù)。這其中最典型的問(wèn)題便是批量增加元素。這時(shí),如果構(gòu)造函數(shù)被調(diào)用時(shí)沒(méi)有參數(shù),則會(huì)自動(dòng)設(shè)置為。因?yàn)閺南到y(tǒng)的角度來(lái)說(shuō),當(dāng)你用字符串的時(shí)候,它會(huì)被傳進(jìn)構(gòu)造函數(shù),并且重新調(diào)用另一個(gè)函數(shù)。 序言 在今天,JavaScript已經(jīng)成為了網(wǎng)頁(yè)編輯的核心。尤其是過(guò)去的幾年,互聯(lián)網(wǎng)見(jiàn)證了在SPA開(kāi)發(fā)、圖形處理、交互等方面大量JS庫(kù)的出現(xiàn)。 如果初次打交道,很多人會(huì)覺(jué)得js很簡(jiǎn)單...

    icattlecoder 評(píng)論0 收藏0
  • 【拒絕拖延】常見(jiàn)JavaScript內(nèi)存泄露原因及解決方案

    摘要:前言內(nèi)存泄漏指由于疏忽或錯(cuò)誤造成程序未能釋放已經(jīng)不再使用的內(nèi)存。這里就講一些常見(jiàn)會(huì)帶來(lái)內(nèi)存泄露的原因。解決方案和都設(shè)為。 前言 內(nèi)存泄漏指由于疏忽或錯(cuò)誤造成程序未能釋放已經(jīng)不再使用的內(nèi)存。內(nèi)存泄漏并非指內(nèi)存在物理上的消失,而是應(yīng)用程序分配某段內(nèi)存后,由于設(shè)計(jì)錯(cuò)誤,導(dǎo)致在釋放該段內(nèi)存之前就失去了對(duì)該段內(nèi)存的控制,從而造成了內(nèi)存的浪費(fèi)。這里就講一些常見(jiàn)會(huì)帶來(lái)內(nèi)存泄露的原因。 0. 全局變量...

    tangr206 評(píng)論0 收藏0
  • JavaScript文章

    摘要:我對(duì)知乎前端相關(guān)問(wèn)題的十問(wèn)十答張?chǎng)涡駨場(chǎng)涡翊笊駥?duì)知乎上經(jīng)典的個(gè)前端問(wèn)題的回答。作者對(duì)如何避免常見(jiàn)的錯(cuò)誤,難以發(fā)現(xiàn)的問(wèn)題,以及性能問(wèn)題和不好的實(shí)踐給出了相應(yīng)的建議。但并不是本身有問(wèn)題,被標(biāo)準(zhǔn)定義的是極好的。 這一次,徹底弄懂 JavaScript 執(zhí)行機(jī)制 本文的目的就是要保證你徹底弄懂javascript的執(zhí)行機(jī)制,如果讀完本文還不懂,可以揍我。 不論你是javascript新手還是老...

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

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

0條評(píng)論

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