js設計模式之享元模式

一、簡單介紹

享元模式的核心是運用共享技術來有效支持大量細粒度的對象。享元模式要求將對象的屬性劃分爲內部屬性和外部屬性,它的目標是儘可能減少共享對象的數量。一般來說,內部屬性可以被一些對象共享,外部屬性取決於具體的場景,通常不會改變,根據各自的場景而變化,不能被共享。

二、使用場景

如果需要創建大量類似的對象,那麼就可以使用享元模式了。我們將內部屬性相同的對象指定爲同一個共享的對象,把外部屬性從對象身上剝離,從而減少創建的對象的數量。通常來說,內部狀態有多少種組合,系統中便最多存在多少個對象。

三、示例

假設我們有100個人,每個人有名字和性別,然後這些人男性打籃球,打遊戲,女性化妝,逛街。

這個時候,可以用享元模式來分別構建男、女兩個對象,而不是創建100個人的實例。

class Person {
  constructor(male, nameList) {
    this.male = male;
    this.nameList = nameList;
  }
  playGame() {
    if (this.male === "female") return;
    //...
  }
  playBasketball() {
    if (this.male === "female") return;
    //...
  }
  windowShop() {
    if (this.male === "male") return;
    //...
  }
  dressing() {
    if (this.male === "male") return;
    //...
  }
}

享元模式的核心就是,通過剝離外部屬性和內部屬性,達到減少創建對象的數量的目的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章