单例模式
单例模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
let Singlton = function (name: string) {
this.name = name;
};
Singlton.prototype.getName = function () {
console.log(this.name);
};
let ProxyCreateSingleton:typeof Singlton = (function () {
let instance = null;
return function (name: string) {
if (instance) {
return instance
}
return instance = new Singlton(name);
}
})();
let bob = new ProxyCreateSingleton("bob");
console.log(bob.getName()); // "bob"
let lili = new ProxyCreateSingleton("lili");
console.log(lili.getName()); // "bob"
优点
- 内存中只有一个实例,减少内存开销,尤其是经常创建和销毁的实例
- 避免对资源的多重占用
缺点
- 没有接口,不能继承。
jQuery 也是单例模式,只是使用的方法是将 实例挂载到全局变量中,不过这会造成全局污染。
(function () {
var jquery = (function () { })();
window.jQuery = window.$ = jQuery;
;})(window);
单例模式的实现方法有很多,主要宗旨就是同时只允许有一个实例存在。