Javascript设计模式——单例模式

什么是单例模式?

单例模式是JS中最常用的一种设计模式。这种类型的设计模式属于创建型模式,他提供了一种创建对象的最佳方式。

这种模式设计到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象方式,可以直接访问,不需要实例化该类的对象。

单例模式特点:

1.单例类只能有一个实例

2.单例类必须自己创建自己的实例

3.单例类必须给所以其他对象提供这一实例。

 

单例模式的目的?

模式意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

主要解决:一个全局使用的类频繁创建与销毁,在JS中还可以将一些方法和属性组织到一个单例中,从而减少全局变量,提高代码的易读和维护性。

主要实现:判断系统是否已经有了这个实例,有则返回,无则创建,在JS中还可以通过对象字面量的方式创建一个简单的单例对象,或者通过一个函数自执行的闭包,创建一个拥有私有作用域的单例对象。

应用实例:1.一个党只有一个主席。2.系统弹窗遮罩只创建一次,不用频繁的创建和删除。

 

单例模式实现?

单例模式在实现方式上分为立即实例化和惰性实例化。

立即实例化:程序执行就实例化单例对象。常见的为对象字面量或者函数自执行返回的单例对象。这样做对于处理大量数据或者执行相当耗时的操作不是很好

惰性实例化:需要实例化时调用单例类提供的方法进行初始化。

具体代码请参考其他文章,这里不做实现

 

单例模式适合的场所?

在简单的项目中,可以将所有代码都组织到一个全局变量名下。

在中等的项目中,可以将单例作为一个命名空间,将一些相关的方法和属性组织到一起,让代码更加模块化。

在大型的项目中,可以利用单例模式把那些经常需要使用到的,并且开销大(数据量大)的功能使用惰性实例化的方式加载到程序中,优化代码性能。

 

单例模式的好处?

1.减少全局变量

2.组织代码,从而更加易读和维护。

3.可以提高系统性能,减少重复创建和销毁,或者开销比较大的操作,所导致的内存消耗

 

单例模式的用途?

1.划分命名空间

     它提供了一种将代码组织为一个逻辑单元的手段,这个逻辑单元中的代码可以通过单一的变量进行访问,命名空间是可靠地Javascript编程的一个重要工具。把相关的方法组织到一起,也助于增强代码的文档性。

2.创建私有静态变量

  通过将变量放到一个自执行的函数内部,并返回一个可以获取里面私有变量的特权方法,即可模拟出静态私有变量。

    

 

posted @ 2017-11-23 14:21  ~Jser  阅读(154)  评论(0)    收藏  举报