单例设计模式

Posted 一声蔷薇udVkP

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例设计模式相关的知识,希望对你有一定的参考价值。

什么是单例设计模式

1、保证一个类只能创建一个实例,并且提供访问他的全局访问点
例如:登录按钮,点击创建一次登录浮框,再点击不会创建,会返回刚才创建的浮框。常见的应用场景:线程池、全局缓存、浏览器window对象

通用的惰性单例具备以下特点

  1. 在需要的时候才创建
  2. 把管理单例和创建对象分为两个方法来实现
  3. 遵守单一责任原则

通用的惰性单例案例

  1. 封装一个通用的管理单例的方法,最后返回一个函数,用于惰性调用(这一个块是不变的,便于复用)

     var getSingle = function(fn) {
                   var result
                   return function() {
                       return result || (result = fn.apply(this, arguments))
                   }
               }
  2. 创建对象的方法(这个跟据具体情况创建)

     var createDiv = function() {
                   let div = document.createElement("div");
                   div.style.display = "none";
                   div.innerText = "输入密码登录"
                   document.body.appendChild(div);
                   return div
               }
  3. 使用单例

    var createSingleLayer = getSingle(createDiv);
  4. 调用单例方法

    document.getElementById("btn").onclick = function() {
               let div = createSingleLayer();
               div.style.display = "block";
           }

以上是关于单例设计模式的主要内容,如果未能解决你的问题,请参考以下文章

常用代码片段

性能比较好的单例写法

片段作为 Android 中的单例

单例片段或保存网页视图状态

从 Viewpager2 片段访问父片段函数

你熟悉的设计模式都有哪些?写出单例模式的实现代码