設計模式并非是難以理解, 或是難以應用到實踐中的, 相反的, 設計模式恰恰代表了某些場景下的最佳實踐! 這些設計模式通常被有經(jīng)驗的開發(fā)者們所采用含蓉。
設計模式是開發(fā)者們在開發(fā)過程中面臨的一般問題的解決方案晌砾。 這些解決方案是眾多開發(fā)者們經(jīng)過長時間的實驗和錯誤所總結(jié)出來的
本文將講解前端 (javascript) 的設計模式概念!
傳統(tǒng)開發(fā)工程中, 單例模式就是保證一個類只有一個實例, 在javascript中, 單例作為一個命名空間提供者, 在全局變量或局部變量中提供一個唯一的訪問點即可, 如以下實現(xiàn)代碼
- 使用字面量形式實現(xiàn)單例模式
var single = {
name: '單例模式',
toString: function() {
return 'Hello world!';
}
}
- 或是使用構(gòu)造函數(shù)形式實現(xiàn)單例模式
function Single(name) {
var that = this;
this.name = name || '單例模式';
// 只能夠創(chuàng)建一次, 第二次將返回實例
Single = function() {
return that;
}
}
Single.prototype.toName = function() {
return this.name;
}
var single = new Single;
- 或是使用閉包, 只暴露某些屬性和方法
var single = (function() {
var name = '單例模式';
var a = 100;
var b = 200;
var toName = function() {
return name + a;
}
return {
name: name,
toName: toName
}
})();
無論如何實現(xiàn)單例模式, 但在具體工程中, 只會存在一個Single實例, 即為單例模式
使用場景
單例模式一般使用場景為系統(tǒng)中不會重復創(chuàng)建的模塊, 如頁面開始時, 會加載一些配置和屬性, 這些配置和屬性是一定存在且只需要一份就夠了, 不會存在需要多分的情況, 這時就適合使用單例模式
注意事項
單例模式一般不推薦使用構(gòu)造函數(shù)生成, 因為使用字面量速度會比構(gòu)造函數(shù)快, 而且字面量本身強調(diào)了這個對象的唯一性, 但具體實現(xiàn)方法還是要根據(jù)場景不同而選擇不同的實現(xiàn)方式
其他設計模式
構(gòu)造函數(shù)模式: http://www.reibang.com/p/cf809d980459
建造者模式: http://www.reibang.com/p/70cf4bb80549
簡單工廠模式: http://www.reibang.com/p/4293450926c2
抽象工廠模式: http://www.reibang.com/p/d6138f36e6e2
裝飾者模式: http://www.reibang.com/p/16cf284ab810
外觀模式: http://www.reibang.com/p/179ae2a13c59