設(shè)計模式

1. 單例模式

每次實例化后的對象都一樣new Singleton===new Singleton=>true

ES5

function Singleton(){
    // 判斷是否存在實例
    if (typeof Singleton.instance === 'object') {
        return Singleton.instance;
    }
    // 緩存
    Singleton.instance = this;
}

ES6

class Singleton{
    static instance 
    constructor(){
        if(typeof Singleton.instance==='object'){
            return Singleton.instance
        }
        Singleton.instance=this;
    }
}

2. 構(gòu)造函數(shù)模式

構(gòu)造函數(shù)當(dāng)成普通函數(shù)使用來實現(xiàn) Person(123) instanceof Person=>true,不過方法最好寫在原型鏈上,
當(dāng)有大批量的實例的話,可以共享資源,就會節(jié)約很多內(nèi)存

ES5

function Person(age){
     if (!(this instanceof Person)) {
        return new Person(age);
    }
    this.age = age;
}

ES6

class Person{
    constructor(){

    }
}

ES6中,會拋出異常Cannot call a class as a function

3. 職責(zé)鏈模式

從第一個對象開始,鏈中收到請求的對象親自處理它,然后處理完畢后轉(zhuǎn)發(fā)給鏈中的下一個處理者

class Handle{
    constructor(func,handle){
        this._func=func;
        this._next=handle;
    }
    invoke(){
        (this._func||(()=>{}))()
        if(this._next) this._next.invoke()
    }
}
待續(xù)。。。。

參考鏈接

最后編輯于
?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

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