详细介绍javascript中的单体模式singleton(全面)

来源:互联网 发布:python计算器源代码 编辑:程序博客网 时间:2024/05/23 12:54

一、单体模式描述

  1、单体模式是javascript中最基本但又最有用的模式之一,他可能比其他任何模式都常用。
2、这种模式提供了一种将代码组织为一个逻辑单元的手段,这个逻辑单元中的代码可以通过单一的变量进行访问。通过确保单体对象只存在一份实例,你就可以确信自己的所有代码使用的都是同样的全局资源。

二、单体模式分类

1、简单单体
// 1、简单单体代码var singLeton = {name:'CHX',age:28,sayName:function () {alert('CMX');}}alert(singLeton.name);//CMX//补充:划分命名空间(区分代码)var CHX = {};CHX.singLeton = {name:'CHX',age:28,sayName:function () {alert('CMX');}}CHX.singLeton.sayName();//CMX



2、闭包单体
// 2、闭包单体 闭包的主要目的 保护数据var CHX = {};CHX.singLeton = (function(){//添加自己的私有成员var name = 'CHX';var age = 28;var sayName = function() {alert('CHX');}//把块级作用域里的执行结果赋值类我的单体对象return {name:name,age:age,sayName:sayName}})();CHX.singLeton.sayName();//CMX



3、惰性单体
// 3、惰性单体 和闭包单体有一些相似的地方var CHX = {}; //命名空间CHX.Base = (function(){//私有变量 控制返回的单体对象var uniqInstance; // undinfind// 需要一个构造器 init 初始化单体对象的方法function init() {//添加自己的私有成员var name = 'CHX';var age = 28;var sayName = function() {alert('CHX');}return {name:name,age:age,sayName:sayName};}return {getInstance:function() {if(!uniqInstance) { //实例不存在uniqInstance = init();}return uniqInstance;}}})();//CHX.Base.getInstance().sayName();alert('CHX')//console.log(CHX.Base.getInstance().name);CMX


4、分支单体

// 4、分支单体  主要解决浏览器兼容问题(判断程序的分支,浏览器差异的检测)var CHX = {};var def = false; //到时候动态判断赋值CHX.More = (function(){ var obj1 = {//火狐浏览器 内部的一些配置attr1:'FF属性1'};var obj2 = {//IE浏览器 内部的一些配置attr1:'IE属性1'};return (def)?obj1:obj2;})();alert(CHX.More.attr1);//IE属性1




0 0
原创粉丝点击