亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

crelaber / 2548人閱讀

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

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

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

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)分離開來。
策略模式至少由兩部分組成:
1.策略類:策略類封裝了具體的算法,并負(fù)責(zé)具體的計(jì)算過程,是可變的;
2.環(huán)境類:環(huán)境類接受客戶的請求,隨后將請求委托給某一個(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è)對象提供一個(gè)代用品或占位符,以便控制對它的訪問。
圖片懶加載就是一種典型有用場景:

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. 中介者模式

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

5.裝飾者模式

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

    摘要:前言內(nèi)存泄漏指由于疏忽或錯(cuò)誤造成程序未能釋放已經(jīng)不再使用的內(nè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)存之前就失去了對該段內(nèi)存的控制,從而造成了內(nèi)存的浪費(fèi)。這里就講一些常見會帶來內(nèi)存泄露的原因。 0. 全局變量...

    tangr206 評論0 收藏0
  • JavaScript文章

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

    mumumu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<