如果已經存在一個實例,則返回這個已存在的實例。
如果沒有實例,則創建一個新的實例,並將其返回。
//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,兩個變數指向同一個實例