2024-06-10|閱讀時間 ‧ 約 24 分鐘

設計模式與程式架構(四)

    ※ 單例模式介紹

    ※ 定義:單例模式是一種設計模式,確保一個class(類)只有一個實例,並提供一個存取它的全域存取點。無論如何取值,皆只對這個實例取值。

    ※ 目的:保證一個類別只會產生一個物件,而且提供存取該物件的統一方法。

    ※ 講解:單例模式確保一個類無論怎麼 new 或 get,都只能拿到相同的實例。這意味著:

    如果已經存在一個實例,則返回這個已存在的實例。

    如果沒有實例,則創建一個新的實例,並將其返回。

    ※ 使用場合:

    • 資料庫的連接池:確保所有資料庫操作共用一個連接池,以節省資源並提高性能。
    • API 的收發工具,如 AJAX、Axios 等,確保所有 HTTP 請求共用一個實例,以統一管理和配置。
    • 遊戲的「世界」場景:確保整個遊戲的世界狀態只有一個實例,避免多個實例導致的不一致性。

    單例模式範例:

    //Singleton:單例模式
    class Singleton {
    //首先new一個靜態的instance,它是Singleton自己本身的類別
    private static instance: Singleton

    // new一個方法來獲得instance
    //使用者只能夠透過getInstance這個方法去取得instance
    public static getInstance() {
    //檢查instance是否存在
    if (!Singleton.instance) {
    //如果不存在,就new一個instance給使用者
    Singleton.instance = new Singleton()
    }
    //如果存在就將instance return出去
    return Singleton.instance
    }
    //使用private將constructor給隱藏起來,不給使用者直接new
    //若要取得,儘可以透過上方的getInstance獲得
    private constructor() {

    }

    // 測試 Singleton 類別
    const sin = Singleton.getInstance()
    const sin2 = Singleton.getInstance()
    console.log(sin === sin2)// true,兩個變數指向同一個實例



    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.