JavaScript设计模式-单例模式

jopen 10年前

在js中使用单例模式可以防止名称冲突,也便于统一管理js。

/*study*/    /**   * 使用单例模式创建一个应用程序名称空间   * 调用$(document).ready(myApp.init)   */  var myApp = {   //初始化   init : function(){},   dshboard : function(){},   controlPanel : function(){},   appSettings : function(){}  }    /**   * 根据开发人员和网站结构,拆分单个单例模式。 这样开发人员负责自己的js文件,便于管理,防止冲突。   * 等到开发完成之后再把多个js文件合成一个js文件。减少与客户端的http连接次数。   *    */  //一个站点一个js命名空间  var myApp = {   //common包含项目的通用代码,由主管负责   common : {    init : function(){}   }  }  //程序员A负责dashboard  myApp.dashboard = {   init : function(){    ....   },   func1 : function(){},   func2 : function(){}  }  //程序员B负责controlPanel  myApp.controlPanel = {   ...  }    /**   * Module模式   * 由yahoo首席js架构师 Douglas Crockford 发明   *   * 特点:   *   相对于单例模式,增加私有方法,私有属性的功能。   *   是一个自动执行的函数,也就是创建的时候返回公有方法和属性的对象   */  var myApp = function(){   //私有变量和方法   var privateVarible = 1;   var privateFunction = function(){};     //返回对象包含公有属性和对象   return {    init : function(){},    publicVariable : 42,    publicFunction : function(){     //invoke private function or varible     privateFunction();    }   }  }(/*自动调用*/);    //扩展Module模式  myApp.ExtendModul = function(){   //私有的部分   //返回公有   return {    ...   }  }();    /**   * Garber-lrish模式   *  这个模式提供一个简洁的工具,为在$(function(){})中运行的代码提供一个统一的、可伸缩、可维护的方法   *  [= = ! 好像用处不大]   */