JavaScript設計模式之裝飾器模式

2021-09-01 16:09:51 字數 1702 閱讀 3620

為物件新增新功能;不改變其原有的結構和功能。

手機殼就是裝飾器,沒有它手機也能正常使用,原有的功能不變,手機殼可以減輕手機滑落的損耗。

}// 測試

let circle = new circle()

circle.draw()

let decorator = new decorator(cicle)

decorator.draw()

// 簡單的裝飾器

@testdec // 裝飾器

class demo {}

function testdec(target)

console.log(demo.isdec) // true

// 裝飾器原理

@decorator

class a {}

// 等同於

class a {}

a = decorator(a) || a; // 把a 作為引數,返回執行的結果

// 傳引數

function testdec(isdec)

}@testdec(true)

class demo

alert(demo.isdec) // true

裝飾類

function mixins(...list) 

}const foo =

}@mixins(foo)

class myclass{}

let myclass = new myclass()

myclass.foo() // 'foo'

裝飾方法

// 例1 唯讀

function readonly(target, name, descriptor);

descriptor.writable = false;

return descriptor;

}class person

@readonly

name() $` }

}var p = new person()

console.log(p.name())

p.name = function () {} // 這裡會報錯,因為 name 是唯讀屬性

// 例2 列印日誌

function log(target, name, descriptor) with`, arguments);

// 2\. 執行原來的**,並返回

};return descriptor;

}class math

}const math = new math();

const result = math.add(2, 4);

console.log('result', result);

成熟的裝飾器庫

JavaScript設計模式之工廠模式

工廠模式是用來建立物件的一種最常用的設計模式。把建立物件的具體邏輯封裝在乙個函式中,那麼這個函式就可以被視為乙個工廠。工廠模式根據抽象程度的不同可以分為 簡單工廠,工廠方法和抽象工廠。簡單工廠模式又叫靜態工廠模式,由乙個工廠物件決定建立某一種產品物件類的例項。主要用來建立同一類物件的不同例項。fun...

JavaScript 設計模式之工廠模式

工廠模式的定義 工廠模式定義乙個用於建立物件的介面,這個介面由子類決定例項化哪乙個類。該模式使乙個類的例項化延遲到了子類。而子類可以重寫介面方法以便建立的時候指定自己的物件型別。工廠模式的使用場景 以下幾種情景下工廠模式特別有用 1 物件的構建十分複雜 2 需要依賴具體環境建立不同例項 3 處理大量...

JavaScript 設計模式之工廠模式

一 模式概念解讀 1.工廠模式概念文字解讀 工廠模式定義乙個用於建立物件的介面,這個介面由子類決定例項化哪乙個類。該模式使乙個類的例項化延遲到了子類。而子類可以重寫介面方法以便建立的時候指定自己的物件型別 抽象工廠 這個模式十分有用,尤其是建立物件的流程賦值的時候,比如依賴於很多設定檔案等。並且,會...