Node.js中Es6中的單例模式
阿新 • • 發佈:2018-12-10
1.一般情況下,我們是每次呼叫一個建構函式,建構函式及相關被呼叫的函式都會執行一次。及呼叫N次,建構函式及相關函式都會執行N次,這樣就會對伺服器和底層資料庫的效能造成浪費。
class Db { //建構函式方法 constructor(){ console.log("例項化會觸發建構函式"); } connect(){ console.log("連線資料庫"); } find(){ console.log('查詢資料庫'); } } var myDb0 = new Db(); var myDb1 = new Db();
2次例項化執行了2次建構函式。
優化的思路是執行建構函式的時候進行判斷,如果建構函式已經執行則不再執行,此思路即單例模式。
class Db { //單例 static getInstance(){ if(!Db.instance){ Db.instance = new Db(); } return Db.instance; } //建構函式方法 constructor(){ console.log("例項化會觸發建構函式"); } connect(){ console.log("連線資料庫"); } find(){ console.log('查詢資料庫'); } } var myDb0 = Db.getInstance(); var myDb1 = Db.getInstance(); myDb0.connect(); myDb0.find(); myDb1.connect(); myDb1.find();
可以看到採用單例模式後,2次例項化只執行了一次建構函式,靜態方法是執行了2次。