TypeScript實現設計模式——單例模式


最近在學習設計模式,又正好剛上手了typescript,就想要用ts實現一下試試。

單例模式的目的是限制一個類只能被實例化一次,提供一個全局的訪問點。單例模式又被分為懶漢單例模式和餓漢單例模式,懶漢單例模式就是在第一次調用時實例化,餓漢單例模式是類加載時就實例化。

核心要點:

把一個靜態私有變量確立為唯一的實例,外部通過靜態方法訪問這個唯一的實例,並把構造函數設為私有。

懶漢單例模式

class PeopleSingle {
  /**核心 - 一個接收實例的靜態成員 */
  private static people: PeopleSingle;
  private name: string;

  /**核心 - 私有構造函數 */
  private constructor(name: string) {
    this.name = name;
  }

  /**核心 - 獲取實例 */
  public static getInstance(): PeopleSingle {
    if (this.people == null) {
      this.people = new PeopleSingle('金閃閃');
    }
    return PeopleSingle.people;
  }

  public say(): void {
    console.log(`I'm ${this.name}.`);
  }
}

測試

let people = PeopleSingle.getInstance();
people.say();

餓漢單例模式

class PeopleSingle {
  /**核心 - 一個接收實例的靜態成員,直接創建好實例 */
  private static people: PeopleSingle = new PeopleSingle('金閃閃');
  private name: string;

  /**核心 - 私有構造函數 */
  private constructor(name: string) {
    this.name = name;
  }

  /**核心 - 獲取實例 */
  public static getInstance(): PeopleSingle {
    return PeopleSingle.people;
  }

  public say(): void {
    console.log(`I'm ${this.name}.`);
  }
}

測試

let people = PeopleSingle.getInstance();
people.say();

舉的例子不是特別好,但是意思是這個意思。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM