Javascript设计模式——单例模式
什么是单例模式?
单例模式是JS中最常用的一种设计模式。这种类型的设计模式属于创建型模式,他提供了一种创建对象的最佳方式。
这种模式设计到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象方式,可以直接访问,不需要实例化该类的对象。
单例模式特点:
1.单例类只能有一个实例
2.单例类必须自己创建自己的实例
3.单例类必须给所以其他对象提供这一实例。
单例模式的目的?
模式意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
主要解决:一个全局使用的类频繁创建与销毁,在JS中还可以将一些方法和属性组织到一个单例中,从而减少全局变量,提高代码的易读和维护性。
主要实现:判断系统是否已经有了这个实例,有则返回,无则创建,在JS中还可以通过对象字面量的方式创建一个简单的单例对象,或者通过一个函数自执行的闭包,创建一个拥有私有作用域的单例对象。
应用实例:1.一个党只有一个主席。2.系统弹窗遮罩只创建一次,不用频繁的创建和删除。
单例模式实现?
单例模式在实现方式上分为立即实例化和惰性实例化。
立即实例化:程序执行就实例化单例对象。常见的为对象字面量或者函数自执行返回的单例对象。这样做对于处理大量数据或者执行相当耗时的操作不是很好
惰性实例化:需要实例化时调用单例类提供的方法进行初始化。
具体代码请参考其他文章,这里不做实现
单例模式适合的场所?
在简单的项目中,可以将所有代码都组织到一个全局变量名下。
在中等的项目中,可以将单例作为一个命名空间,将一些相关的方法和属性组织到一起,让代码更加模块化。
在大型的项目中,可以利用单例模式把那些经常需要使用到的,并且开销大(数据量大)的功能使用惰性实例化的方式加载到程序中,优化代码性能。
单例模式的好处?
1.减少全局变量
2.组织代码,从而更加易读和维护。
3.可以提高系统性能,减少重复创建和销毁,或者开销比较大的操作,所导致的内存消耗
单例模式的用途?
1.划分命名空间
它提供了一种将代码组织为一个逻辑单元的手段,这个逻辑单元中的代码可以通过单一的变量进行访问,命名空间是可靠地Javascript编程的一个重要工具。把相关的方法组织到一起,也助于增强代码的文档性。
2.创建私有静态变量
通过将变量放到一个自执行的函数内部,并返回一个可以获取里面私有变量的特权方法,即可模拟出静态私有变量。