JavaJavascript基礎(chǔ)進階(十七)JS中常用的設(shè)計模式

單利設(shè)計模式、構(gòu)造原型設(shè)計模式、發(fā)布訂閱設(shè)計模式、promise設(shè)計模式

單利模式

let model = (function() {
    let fn = function() {
        // .....
    }

    return {
        init: function() {
            fn()
        },
        fn: fn,
    }
})();
model.init();

構(gòu)造原型設(shè)計模式

最貼近OOP面向?qū)ο缶幊趟枷氲?/p>

不管是封裝類庫還是插件或者UI組件,都是基于構(gòu)造原型模式開發(fā)的。

class Person {
  constructor(...arg){
    // 私有屬性或者方法
    let [x = 0, y = 1] = arg
    this.x = x
    this.y = y
  }
  // 公有屬性方法
  say() {
    console.log(this.name)  
  }
}
let p1 = new Person();
// 繼承Person類
class Child extends Person {
  constructor(x,y,z){
    super(x,y,z);
    this.z = z
  }
  fn(){
    this.say()
  }
}
let c1 = new Child(100,200,300)

發(fā)布訂閱設(shè)計模式:觀察者模式

不同于單利和構(gòu)造,發(fā)布訂閱是小型設(shè)計模式。應(yīng)用到某一個具體的需求中:凡是達到某個條件之后要執(zhí)行N多方法,我們都可以依托于發(fā)布訂閱模式管理和規(guī)劃我們的js代碼

實現(xiàn)思路:
1、創(chuàng)建一個計劃表(容器)
2、后期要做什么事情一次吧需要的處理事情增加到計劃表中
3、當(dāng)符合某個條件時,通知計劃表按照順序執(zhí)行

promise設(shè)計模式

解決ajax異步請求層級嵌套問題

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容