{eyou:include file='banner.htm'/}
TypeScript單例創(chuàng )建
2026-05-04 20:25:43
48447
[摘要] 天津九安特機電工程有限公司(www.hunqingrc.com)TypeScript單例創(chuàng )建是一種設計模式,用于確保一個(gè)類(lèi)只有一個(gè)實(shí)例,并提供一個(gè)全局訪(fǎng)問(wèn)點(diǎn),在TypeScript中,我們可以使用不同的方法來(lái)實(shí)現單例模式,以下是兩種常見(jiàn)的實(shí)現方法:圖片來(lái)源網(wǎng)絡(luò ),侵

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

(圖片來(lái)源網(wǎng)絡(luò ),侵刪)

1、單例懶漢式(Lazy initialization):

懶漢式是創(chuàng )建指在第一次調用時(shí)才創(chuàng )建實(shí)例,這種方法的單例優(yōu)點(diǎn)是延遲了實(shí)例的創(chuàng )建,節省了資源,創(chuàng )建以下(???)是單例一個(gè)使用懶漢式實(shí)現??的TypeScript單例類(lèi):

class Singleton {  private static instance: Singleton | null = null; private constructo??r() { } public static geヽ(′ー`)ノtInstance(): Singleton {  if (Singlet??on.instance === null) {  Singleton.instance = new Singletヽ(′?`)ノon(); } return Singleton.instance; }}const instanc??e1 = Singleton.ge(′▽?zhuān)?tInstance();const instance2 = Singleton.ge???tInstance();console.log(ins( ?ヮ?)t( ???)ance1 === instance2); // 輸出 true,表示兩個(gè)實(shí)例是創(chuàng  )建同一個(gè)對象

在這個(gè)例子中,我們首先定義了一個(gè)名為的單例類(lèi),這個(gè)類(lèi)有一個(gè)靜態(tài)屬性instance,創(chuàng )建用于存儲類(lèi)的單例實(shí)例,我們還定義了一個(gè)私有構造函數,以防止外部直接創(chuàng )建實(shí)例,我們定義了一個(gè)名為getInstance的靜態(tài)方法,用于獲取類(lèi)的(de)實(shí)例,在這個(gè)方法中,(?????)我們首先檢查instance屬性是否為??null,如果是,則創(chuàng )建一個(gè)新的實(shí)例并將其賦值給instance屬性,我們返回instance屬性的值,這樣,我們就(jiu)可以確保每次調用getInstance方法時(shí),都返??回相同的實(shí)例。

2、??餓漢式(Eager initialization):

餓漢式是指在類(lèi)加載時(shí)就創(chuàng )建實(shí)例,這種方法的優(yōu)點(diǎn)是簡(jiǎn)單易懂,但可能會(huì )浪費資源,以下是一個(gè)使用餓漢式實(shí)現的TypeScript單例類(lèi):

class Singleton {  private static instance: Singleton = new Singleton(); private construct??or() { } public stati(′?`*)c getInstance(): Singleton {  return Singleton.instance; }}const instance1 = Singleton??.getInstance();const instance2 = Singleton.getIns??tance();console.log(instance1 === instance2); // 輸出 true,表示兩個(gè)實(shí)例是同一個(gè)對象

在這個(gè)例子中,我們首先定義了一個(gè)名為Singleton的類(lèi),(′▽?zhuān)?這個(gè)類(lèi)有一個(gè)靜態(tài)屬性instance,并在類(lèi)加載時(shí)就創(chuàng )建了一個(gè)新的實(shí)例并將其賦值給ins??tance屬性,我們還定義了一個(gè)私有構造函數,以防止外部直接創(chuàng )建實(shí)例,我們定義了一個(gè)名為getInstance的靜態(tài)方法,用于獲取類(lèi)的實(shí)例,在這個(gè)方法中,我們直接返回instance屬性的值,這樣,我們就可以確保每次調用getInstance方法時(shí),都返回相同的實(shí)例。

以上就是兩種常見(jiàn)的TypeScript單例實(shí)現方法,懶漢??式和餓漢式各有優(yōu)缺點(diǎn),具體選擇哪種方法取決于實(shí)際需求,懶漢式適用于在第一次調用時(shí)才需要創(chuàng )建實(shí)例的場(chǎng)景,而餓漢式適用于在類(lèi)加載時(shí)就確定需要創(chuàng )建實(shí)例的場(chǎng)景,無(wú)論采用哪種方法,都可以確保一個(gè)類(lèi)只有一個(gè)實(shí)例,并提供一個(gè)全局訪(fǎng)問(wèn)點(diǎn)。


推薦閱讀

亚洲女同成aV人片在线观看|亚洲www啪成人一区二区麻豆|亚洲国产中日韩精品综合|亚洲国产成人精品一级片|亚洲无码在线视频免费

亚洲女同成aV人片在线观看|亚洲www啪成人一区二区麻豆|亚洲国产中日韩精品综合|亚洲国产成人精品一级片|亚洲无码在线视频免费 邳州市| 古交市| 简阳市| 五莲县| 土默特左旗| 定南县| 屯门区| 胶州市| 同仁县| 濮阳县| 天峻县| 泗水县| 麻栗坡县| 武川县| 弋阳县| 崇州市| 常熟市| 罗田县| 鹤峰县| 永川市| 凤山市| 河西区| 高邮市| 建德市| 九台市| 五河县| 旌德县| 青田县| 青浦区| 乌拉特中旗| 凌海市| 中西区| 凤冈县| 揭西县| 广德县| 望都县| 赫章县| 崇义县| 高清| 龙川县| 汉沽区| http://444 http://444 http://444 http://444 http://444 http://444