構(gòu)造函數(shù)三個(gè)特征 單例模式構(gòu)造函數(shù)為什么要是私有的?
單例模式構(gòu)造函數(shù)為什么要是私有的?私有(Private)構(gòu)造函數(shù)是為減少誤用和猜測(cè)而設(shè)計(jì)的規(guī)則。您可以想象,當(dāng)您的類有一個(gè)公共構(gòu)造函數(shù),并且您的文檔描述沒(méi)有那么詳細(xì)和清晰地告訴用戶應(yīng)該使用靜態(tài)成員而不
單例模式構(gòu)造函數(shù)為什么要是私有的?
私有(Private)構(gòu)造函數(shù)是為減少誤用和猜測(cè)而設(shè)計(jì)的規(guī)則。
您可以想象,當(dāng)您的類有一個(gè)公共構(gòu)造函數(shù),并且您的文檔描述沒(méi)有那么詳細(xì)和清晰地告訴用戶應(yīng)該使用靜態(tài)成員而不是使用構(gòu)造函數(shù)來(lái)構(gòu)造實(shí)例(或用戶根本忽略的文檔)時(shí),用戶會(huì)感到困惑。在這個(gè)時(shí)候,不穩(wěn)定的因素會(huì)埋在程序里,有時(shí)我們?cè)谶@里很難找到它們。
如果您使用私有構(gòu)造函數(shù),當(dāng)您嘗試轉(zhuǎn)到“新建”時(shí),編譯器將立即阻止當(dāng)前操作。
您可能認(rèn)為自己使用它并不重要,但是當(dāng)您在兩周內(nèi)回顧您的代碼時(shí),如果沒(méi)有這個(gè)私有構(gòu)造函數(shù),您甚至可能會(huì)想,“為什么不能通過(guò)new使用這個(gè)對(duì)象?”
js放在構(gòu)造函數(shù)里面的私有方法,怎么在原型里面調(diào)用?
首先,在prototype對(duì)象中創(chuàng)建所有方法。不管生成多少實(shí)例,內(nèi)存中只有一個(gè)方法,但該方法不能訪問(wèn)私有變量。其次,這種方法可以訪問(wèn)私有變量,這不利于派生新實(shí)例不能訪問(wèn)超類的私有變量和方法。另一種方法是通過(guò)關(guān)閉包來(lái)設(shè)置私有變量。新手,不要犯錯(cuò)誤,多給點(diǎn)指導(dǎo)。最近,我在研究JS設(shè)計(jì)模式