新聞中心
TypeScript單例創(chuàng)建是一種設(shè)計(jì)模式,用于確保一個(gè)類(lèi)只有一個(gè)實(shí)例,并提供一個(gè)全局訪問(wèn)點(diǎn),在TypeScript中,我們可以使用不同的方法來(lái)實(shí)現(xiàn)單例模式,以下是兩種常見(jiàn)的實(shí)現(xiàn)方法:

普陀網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)自2013年創(chuàng)立以來(lái)到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
1、懶漢式(Lazy initialization):
懶漢式是指在第一次調(diào)用時(shí)才創(chuàng)建實(shí)例,這種方法的優(yōu)點(diǎn)是延遲了實(shí)例的創(chuàng)建,節(jié)省了資源,以下是一個(gè)使用懶漢式實(shí)現(xiàn)的TypeScript單例類(lèi):
class Singleton {
private static instance: Singleton | null = null;
private constructor() {}
public static getInstance(): Singleton {
if (Singleton.instance === null) {
Singleton.instance = new Singleton();
}
return Singleton.instance;
}
}
const instance1 = Singleton.getInstance();
const instance2 = Singleton.getInstance();
console.log(instance1 === instance2); // 輸出 true,表示兩個(gè)實(shí)例是同一個(gè)對(duì)象
在這個(gè)例子中,我們首先定義了一個(gè)名為Singleton的類(lèi),這個(gè)類(lèi)有一個(gè)靜態(tài)屬性instance,用于存儲(chǔ)類(lèi)的實(shí)例,我們還定義了一個(gè)私有構(gòu)造函數(shù),以防止外部直接創(chuàng)建實(shí)例,我們定義了一個(gè)名為getInstance的靜態(tài)方法,用于獲取類(lèi)的實(shí)例,在這個(gè)方法中,我們首先檢查instance屬性是否為null,如果是,則創(chuàng)建一個(gè)新的實(shí)例并將其賦值給instance屬性,我們返回instance屬性的值,這樣,我們就可以確保每次調(diào)用getInstance方法時(shí),都返回相同的實(shí)例。
2、餓漢式(Eager initialization):
餓漢式是指在類(lèi)加載時(shí)就創(chuàng)建實(shí)例,這種方法的優(yōu)點(diǎn)是簡(jiǎn)單易懂,但可能會(huì)浪費(fèi)資源,以下是一個(gè)使用餓漢式實(shí)現(xiàn)的TypeScript單例類(lèi):
class Singleton {
private static instance: Singleton = new Singleton();
private constructor() {}
public static getInstance(): Singleton {
return Singleton.instance;
}
}
const instance1 = Singleton.getInstance();
const instance2 = Singleton.getInstance();
console.log(instance1 === instance2); // 輸出 true,表示兩個(gè)實(shí)例是同一個(gè)對(duì)象
在這個(gè)例子中,我們首先定義了一個(gè)名為Singleton的類(lèi),這個(gè)類(lèi)有一個(gè)靜態(tài)屬性instance,并在類(lèi)加載時(shí)就創(chuàng)建了一個(gè)新的實(shí)例并將其賦值給instance屬性,我們還定義了一個(gè)私有構(gòu)造函數(shù),以防止外部直接創(chuàng)建實(shí)例,我們定義了一個(gè)名為getInstance的靜態(tài)方法,用于獲取類(lèi)的實(shí)例,在這個(gè)方法中,我們直接返回instance屬性的值,這樣,我們就可以確保每次調(diào)用getInstance方法時(shí),都返回相同的實(shí)例。
以上就是兩種常見(jiàn)的TypeScript單例實(shí)現(xiàn)方法,懶漢式和餓漢式各有優(yōu)缺點(diǎn),具體選擇哪種方法取決于實(shí)際需求,懶漢式適用于在第一次調(diào)用時(shí)才需要?jiǎng)?chuàng)建實(shí)例的場(chǎng)景,而餓漢式適用于在類(lèi)加載時(shí)就確定需要?jiǎng)?chuàng)建實(shí)例的場(chǎng)景,無(wú)論采用哪種方法,都可以確保一個(gè)類(lèi)只有一個(gè)實(shí)例,并提供一個(gè)全局訪問(wèn)點(diǎn)。
名稱(chēng)欄目:TypeScript單例創(chuàng)建
網(wǎng)頁(yè)URL:http://fisionsoft.com.cn/article/dheecjd.html


咨詢(xún)
建站咨詢(xún)
