【javascript】javascript设计模式之单例模式
单例模式:
定义:单例模式之所以这么叫,是因为它限制一个类只能有一个实例化对象。
实现方法:判断实例是否存在,如果存在则直接返回,如果不存在就创建了再返回。(确保一个类只有一个实例对象)
特点: 命名空间提供者,从全局命名空间里提供一个唯一的访问点来访问该对象
实现单例的方式
一丶对象字面量
var hero = {
name : "timo"
sex : "male"
method: function(){
console.log("提莫队长正在送命")
 }
}
二丶添加私有成员和方法,然后使用闭包在内部封装这些变量
var hero = function(){
/*私有变量和方法*/
var word = '提莫队长正在送命'
function tell(){
console.log(word)
}
公有变量和方法
return{
told: function(){
tell();
},
dead: "Public string"
}
}
var hero = hero()
hero.told() //队长正在送命
console.log(hero.dead) //Public string
 三丶如果我们想做到只有在使用的时候才初始化,构造函数初始化=>为了节约资源
var timo = (function(){
var inittimo;
function init(){
/*定义单例*/
return {
dead: function(){
console.log("Public dead")
}
word: "提莫队长正在送命"
}
}
return {
getinit: function(){
if(!inittimo){
inittimo = init()
}
return inittimo;
}
}
})();
/*调用公有的方法来获取实例*/
timo.getinit().init()
单例模式的使用场景
系统间各种模式的通信协调上
var SingletonTester = (function () {
    //参数:传递给单例的一个参数集合
    function Singleton(args) {
        //设置args变量为接收的参数或者为空(如果没有提供的话)
        var args = args || {};
        //设置name参数
        this.name = 'SingletonTester';
        //设置pointX的值
        this.pointX = args.pointX || 6; //从接收的参数里获取,或者设置为默认值
        //设置pointY的值
        this.pointY = args.pointY || 10;
    }
    //实例容器
    var instance;
    var _static = {
        name: 'SingletonTester',
        //获取实例的方法
        //返回Singleton的实例
        getInstance: function (args) {
            if (instance === undefined) {
                instance = new Singleton(args);
            }
            return instance;
        }
    };
    return _static;
})();
var singletonTest = SingletonTester.getInstance({ pointX: 5 });
console.log(singletonTest.pointX); // 输出 5
我所理解的单例模式,相当于一个命名空间,可以管理代码库的各个模块,比如Vuex里的Module。还有jquery,也是封装好的一个单例。
【javascript】javascript设计模式之单例模式的更多相关文章
- JavaScript设计模式之单例模式
		一.单例模式概念 单例就是保证一个类只有一个实例,实现方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象.在JavaScript里,单例作为一个 ... 
- JavaScript设计模式之单例模式【惰性单例】
		在提高开发水平,往中高级前端工程师中,利用设计模式是必不可少的一条道路.掌握设计模式的思想远远比硬套重要,因为设计模式是一种思想,不局限于开发语言.但实际上由于语言的特性不同,往往在实现的时候会有不少 ... 
- 7 种 Javascript 常用设计模式学习笔记
		7 种 Javascript 常用设计模式学习笔记 由于 JS 或者前端的场景限制,并不是 23 种设计模式都常用. 有的是没有使用场景,有的模式使用场景非常少,所以只是列举 7 个常见的模式 本文的 ... 
- javascript事件设计模式
		JavaScript事件设计模式 http://plkong.iteye.com/blog/213543 http://www.docin.com/p-696665922.html 
- [JS设计模式]:单例模式(1)
		什么是单例模式 所谓单例,就是一个类只有一个实例,实现的方法一般是先判断是否存在实例,如果存在就直接返回,如果不存在就创建了再返回.这样确保了一个类只有一个实例对象. 实现的单例有很多种方式,最简单的 ... 
- 浅谈js设计模式之单例模式
		单例模式的定义是:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式是一种常用的模式,有一些对象我们往往只需要一个,比如线程池.全局缓存.浏览器中的 window 对象等.在 JavaS ... 
- 设计模式之单例模式(Singleton)
		设计模式之单例模式(Singleton) 设计模式是前辈的一些经验总结之后的精髓,学习设计模式可以针对不同的问题给出更加优雅的解答 单例模式可分为俩种:懒汉模式和饿汉模式.俩种模式分别有不同的优势和缺 ... 
- GJM :   C#设计模式(1)——单例模式
		感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ... 
- java设计模式之单例模式(几种写法及比较)
		概念: Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建 ... 
- 每天一个设计模式-4 单例模式(Singleton)
		每天一个设计模式-4 单例模式(Singleton) 1.实际生活的例子 有一天,你的自行车的某个螺丝钉松了,修车铺离你家比较远,而附近的五金店有卖扳手:因此,你决定去五金店买一个扳手,自己把螺丝钉固 ... 
随机推荐
- C#-WebForm-LinQ-条件精确查询、高级查询
			前台界面,并在后台绑定数据 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Ca ... 
- Redis实现分布式存储Session
			前言: 在单个项目时,一般都是用HttpSession接口存储当前登录用户的信息.但是在分布式项目的情况下,session是不会共享的,那怎么实现session共享呢?往下看.... 一.准备工作(基 ... 
- Django官网案例教程
			1.注意:python manage.py runserver 0:8000(侧任何IP均可访问) 
- Java 线程类别
			Java 线程类别 守护线程和非守护线程 守护线程和非守护线程之前的唯一区别在于:是否阻止JVM的正常退出. JVM正常退出是与异常退出相对的概念,异常退出如调用System.exit(status) ... 
- Flutter视图基础简介--Widget、Element、RenderObject
			前言:Flutter官方文档里的一句话:you build your UI out of widgets(使用Flutter开发UI界面时,都是使用Widget),然而,Widget并不是我们真正看到 ... 
- Windows Server 2008 R2 Enterprise 上用 SqlServer 2008 R2 创建发布出现异常
			标题: 新建发布向导------------------------------ SQL Server 无法将“AC”配置为分发服务器. ------------------------------其 ... 
- hibernate多对多单向关联
			多对多单向,一个学生可以有多个老师,一个老师也可以教多个学生.老师可以找到他的学生,学生找不到教他的老师. 老师类Teacher: package com.oracle.hibernate; impo ... 
- 爱奇艺视频显示列表CSS实现
			css: body{margin:0;font-size: 12px;font-family: "宋体":} ul{margin:0;padding:0;list-style: n ... 
- Linux 进程以及多线程的支持
			1.最初内核并没有实现对多线程的支持,2.6之后开始以轻量级进程的方式对多线程进行支持(轻量级线程组). a.在2.6 之前,如果需要实现多线程,只能在用户态下实现,用户程序自己控制线程的切换, 实际 ... 
- Oracle 汉字转拼音触发器
			--函数GetHzFullPY(string)用于获取汉字字符串的拼音 --select GetHzFullPY('中华人民共和国') from dual; --返回:ZhongHuaRenMinGo ... 
