翼度科技»论坛 编程开发 JavaScript 查看内容

前端设计模式——单例模式

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
单例模式是一种设计模式,它可以确保某个类只有一个实例,并提供一个全局的访问点来访问该实例,我们可以使用单例模式来管理全局状态和共享资源。
在JavaScript中,单例模式可以通过多种方式实现,以下是一些常见的实现方式:
1. 对象字面量
使用对象字面量可以轻松地创建单例对象,例如:
  1. const singleton = {
  2.   property1: "value1",
  3.   property2: "value2",
  4.   method1: function () {
  5.     // ...
  6.   },
  7.   method2: function () {
  8.     // ...
  9.   },
  10. };
复制代码
 
上述代码中,使用了一个对象字面量来创建单例对象,该对象包含了一些属性和方法。由于JavaScript中对象字面量本身就是单例的,因此不需要额外的代码来保证单例。
2.  构造函数
在JavaScript中,每个构造函数都可以用于创建单例对象,例如:
  1. function Singleton() {
  2.   // 判断是否存在实例
  3.   if (typeof Singleton.instance === "object") {
  4.     return Singleton.instance;
  5.   }
  6.   // 初始化单例对象
  7.   this.property1 = "value1";
  8.   this.property2 = "value2";
  9.   Singleton.instance = this;
  10. }
  11. const instance1 = new Singleton();
  12. const instance2 = new Singleton();
  13. console.log(instance1 === instance2); // 输出 true
复制代码
 
 
上述代码中,使用了一个构造函数来创建单例对象。在构造函数中,首先判断是否存在单例实例,如果存在则直接返回该实例,否则创建单例对象并将其保存在 `Singleton.instance` 属性中。由于JavaScript中每个构造函数本身就是一个单例,因此不需要额外的代码来保证单例。
3. 模块模式
使用模块模式可以创建一个只有单个实例的对象,例如:
  1. const Singleton = (function () {
  2.   let instance;
  3.   function init() {
  4.     // 创建单例对象
  5.     const object = new Object("I am the instance");
  6.     return object;
  7.   }
  8.   return {
  9.     getInstance: function () {
  10.       if (!instance) {
  11.         instance = init();
  12.       }
  13.       return instance;
  14.     },
  15.   };
  16. })();
  17. const instance1 = Singleton.getInstance();
  18. const instance2 = Singleton.getInstance();
  19. console.log(instance1 === instance2); // 输出 true
复制代码
 
上述代码中,使用了一个立即执行函数来创建单例对象。在该函数中,定义了一个私有变量 `instance` 用于存储单例实例,而 `init` 函数则是用于创建单例实例的方法。最后,返回一个对象,该对象包含一个 `getInstance` 方法,该方法用于获取单例实例。
通过上述方式实现的单例模式,可以确保在程序运行期间,某个类只有一个实例,并且该实例可以在任何地方访问。

来源:https://www.cnblogs.com/ronaldo9ph/p/17187407.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具