JS 设计模式二 -- 单例模式
单例模式
概念
单例模式 就是保证一个类只有一个实例,并提供一个访问它的全局访问点。
实现方法
先判断实例是否存在,如果存在直接返回,如果不存在就创建实例后在返回,确保了一个类只有一个实例对象。
    var Singleton = function(name) {
        this.name = name;
    };
    Singleton.prototype.getName = function() {
        console.log(this.name);
    };
    // 封装获取单例函数
    var getSingleton = function (fn) {
        var result;
        return function () {
            return result || (result = fn.apply(this, arguments));
        }
    }
   var createSingle = getSingleton(function(params){
       var single  = new Singleton(params)
       return single;
   })
   createSingle("GaoSir").getName(); // GaoSir
   createSingle("张三").getName(); // GaoSir
    !(function() {
        //管理单例的逻辑代码,如果没有数据则创建,有数据则返回
        var getSingle = function(fn) { //参数为创建对象的方法
            var result;
            return function() { //判断是Null或赋值
                return result || (result = fn.apply(this, arguments));
            };
        };
        //创建登录窗口方法
        var createLoginLayer = function() {
            var div = document.createElement('div');
            div.innerHTML = '我是登录浮窗';
            div.className = "login";
            div.style.display = 'none';
            document.body.appendChild(div);
            return div;
        };
        //单例方法
        var createSingleLoginLayer = getSingle(createLoginLayer);
        //使用惰性单例,进行创建
        document.getElementById('BtnShow').onclick = function() {
            var loginLayer = createSingleLoginLayer();
            loginLayer.style.display = 'block';
        };
        document.getElementById('BtnHide').onclick = function() {
            var loginLayer = createSingleLoginLayer();
            loginLayer.style.display = 'none';
        };
    })()
JS 设计模式二 -- 单例模式的更多相关文章
- [JS设计模式]:单例模式(1)
		
什么是单例模式 所谓单例,就是一个类只有一个实例,实现的方法一般是先判断是否存在实例,如果存在就直接返回,如果不存在就创建了再返回.这样确保了一个类只有一个实例对象. 实现的单例有很多种方式,最简单的 ...
 - js设计模式总结-单例模式
		
单例模式 解决的问题 保证实例只有一个,避免多个实现,从全局来看,这个实例的状态是唯一的. 实现原理 设置一个变量来记录实例,通过检测该变量是否为空来决定是否创建实例 非透明单例 所谓非透明就是用户在 ...
 - JS设计模式之---单例模式
		
单例模式是保证一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式在现在面向对象的语言Java,C#,C++等等中也有很多用到,其实它在Javascript中使用同样非常广泛. var Cre ...
 - JS设计模式之单例模式
		
单例模式 单例模式的定义是:保证一个类只有一个实例,并提供一个访问它的全局访问点.比如说购物车,在一个商城中,我们只需要一个购物车,购物车在整个商城中是唯一的,不需要多次创建,即使多次点击购物车按钮, ...
 - Java开发中常用的设计模式(二)---单例模式
		
一. 懒汉式单例 //懒汉式单例类.在第一次调用的时候实例化自己 public class Singleton { private Singleton() {} private static Sing ...
 - 浅谈js设计模式之单例模式
		
单例模式的定义是:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式是一种常用的模式,有一些对象我们往往只需要一个,比如线程池.全局缓存.浏览器中的 window 对象等.在 JavaS ...
 - PHP设计模式二-------单例模式
		
1.单例模式的介绍 意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点: 主要解决:一个全局使用的类频繁地创建与销毁. 关键代码:构造函数是私有的,克隆方法也是私有的. 1.1 懒汉式//1 ...
 - JS设计模式之单例模式(一)
		
单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这 就确保了一个类只有一个实例对象. 在JavaScript里,实现单例的方式有很多种, ...
 - Js常用的设计模式(1)——单例模式
		
<Practical Common Lisp>的作者 Peter Seibel 曾说,如果你需要一种模式,那一定是哪里出了问题.他所说的问题是指因为语言的天生缺陷,不得不去寻求和总结一种通 ...
 
随机推荐
- Django 系列博客(十二)
			
Django 系列博客(十二) 前言 本篇博客继续介绍 Django 中的查询,分别为聚合查询和分组查询,以及 F 和 Q 查询. 聚合查询 语法:aggregate(*args, **kwargs) ...
 - 杭电ACM2015--偶数求和
			
偶数求和 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
 - 用EF的三种方式(SqlServer数据库和Oracle数据库)
			
SqlServer数据库 1.DB First 现有DB,生成edmx文件 贴一下生成的model //------------------------------------------------ ...
 - c# API接收Base64转图片
			
/// <summary> /// API接收Base64转图片 /// </summary> /// <param name="Img">图片 ...
 - PHP 匿名函数使用技巧
			
之前写过一篇闭包的使用(点击此处进入),这次深入汇总下php中匿名函数的深入用法和理解: php中的匿名函数 也叫闭包函数 允许指定一个没有名称的函数.把匿名函数赋值给变量,通过变量来调用,举个简单的 ...
 - markdown写作方法规范参考汇总
			
目录 markdown写作方法 markdown规范 补 本文转载自:https://blog.csdn.net/xiaogeldx/article/details/89208074 本文总结了自己的 ...
 - 【20190328】CSS-transform-origin(变形原点)解析
			
因为搜遍网上也没有一篇文章把transform-origin讲得很清楚的,所以自己总结了一下 transform-origin是变形原点,也就是该元素围绕着那个点变形或旋转,该属性只有在设置了tran ...
 - Azure WebJob-Custom Schedule for Azure Web Job Timer Triggers
			
如果想实现Azure Schedule WebJob,有两种方法: 1. 配置CRON Expression,网上有在线CRON配置工具,根据业务需要配置即可 注意:Azure的CRON Expres ...
 - OpenUDID 和 IDFA 比较
			
iOS标识符 现今来比较下,不同情况下两种标识符的变化情况.以下试验,每种标识符均分为存于Keychain和未存于Keychain的两种情况做比较. 广告标识符(IDFA-identifierForI ...
 - Android远程桌面助手(Build 0787)
			
Android远程桌面助手(Build 0787) 新增: 增加了输入法的快速切换功能,支持通过Google拼音输入法在PC端快速输入中文: 增加了Broadcast的暂停和继续功能: 某些应用截屏失 ...