首页 > 代码库 > js设计模式--单体模式
js设计模式--单体模式
单体模式
-单体模式(singleton)是javaScript中最基本最有用的设计模式之一。
-这种模式提供了一种将代码组织为一个逻辑单元的手段,这个逻辑单元中的代码可以通过单一
的变量进行访问。通过确保单体对象只存在一份实例,你就可以确信自己的所有代码使用的都是
同样的全局资源。
-简单单体
-闭包单体
-惰性单体
-分支单体
<script type="text/javascript" charset="utf-8"> // 单体模式(singleton) // 1.简单单体模式 var Singleton = { attr1 : true, attr2 : 10, method1 : function() { alert(‘i am method1‘); }, method2 : function() { alert(‘i am method2‘); } }; // alert(Singleton.attr1); // 补充:划分命名空间 var YF = {}; YF.Singleton = { attr1 : true, attr2 : 10, method1 : function() { alert(‘i am method1‘); }, method2 : function() { alert(‘i am method2‘); } }; // 2.闭包单体模式 // 闭包的主要目的:保护数据 // 命名空间 var YF1 = {}; YF1.Singleton = (function(){ // 把块级作用域里的执行结果赋值给单体对象 // 优点,可以添加自己的私有成员,外部无法发文 var a1 = true; var a2 = 10; var f1 = function() { alert(‘f1‘); }; var f2 = function() { alert(‘f2‘); }; return { attr1 : a1, attr2 : a2, method1 : function() { return f1(); }, method2 : function() { return f2(); } }; })(); alert(YF1.Singleton.attr1); </script>
<script type="text/javascript" charset="utf-8"> // 单体模式(singleton) // 1.惰性单体,和闭包单体有一些相似的地方 // 顶层的命名空间 var YF = {}; YF.Base = (function() { // 私有变量,控制返回的单体对象 var uniqueInstance; // 构造器 初始化单体对象的方法 function init() { var a1 = true; var a2 = 10; var f1 = function(){ alert(‘f1‘); }; var f2 = function(){ alert(‘f2‘); }; return { attr1 : a1, attr2 : a2, method1 : function() { return f1(); }, method2: function() { return f2(); } }; } return { getInstance : function(){ if(!uniqueInstance){ // 如果不存在,则创建单体实例 uniqueInstance = init(); } return uniqueInstance; } }; })(); // 分支单体(判断程序的分支 <浏览器的差异检测>) var YF1 = {}; // 假设true为FireFox, false为IE var difference = true; YF1.More = (function(){ // 火狐浏览器内部的一些配置 var objA = { // 属性1 // 属性2 // 方法1 // 方法2 }; // IE览器内部的一些配置 var objB = { // 属性1 // 属性2 // 方法1 // 方法2 }; return (difference) ? objA : objB; })(); </script>
js设计模式--单体模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。