JS单例模式

原创 2016年05月31日 14:21:43


// 游戏管理对象,单例类
var GameManager = (function () {

    function _GameManager() {
        // 敌人[波组]
        this.groupVector = [];
        // 敌人[数组]
        this.enemyVector = [];
        // 子弹[数组]
        this.bulletVector = [];
        // 移动点集合[数组]
        this.pointVector = [];
        // 当前[背景]
        this.currBgName = "";
        // 当前[地图]
        this.currMapName = "";
        // 当前[金钱]
        this.money = 0;
        // 当前[关卡]
        this.currLevel = 0;
        // 当前[血量]
        this.currHp = 10;
        // 多少波敌人
        this.groupNum = 0;
        // 当前Level plist文件
        this.currLevelFile = "";
        // 下一Level plist文件
        this.nextLevelFile = "";
        // 是否添加完毕
        this.isAddFinished = false;

        this.clear = function(){
            this.groupVector = [];
            this.enemyVector = [];
            this.bulletVector = [];
            this.pointVector = [];
        };
        // ==============[getter && setter]==============
        this.getGroupVector = function(){
            return this.groupVector;
        };
        this.setGroupVector = function(groupVector){
            this.groupVector = groupVector;
        };

        this.getEnemyVector = function(){
            return this.enemyVector;
        };
        this.setEnemyVector = function(enemyVector){
            this.enemyVector = enemyVector;
        };

        this.getBulletVector = function(){
            return this.bulletVector;
        };
        this.setBulletVector = function(bulletVector){
            this.bulletVector = bulletVector;
        };


        this.getPointVector = function(){
            return this.pointVector;
        };
        this.setPointVector = function(pointVector){
            this.pointVector = pointVector;
        };


        this.getCurrBgName = function(){
            return this.currBgName;
        };
        this.setCurrBgName = function(currBgName){
            this.currBgName = currBgName;
        };

        this.getCurrMapName = function(){
            return this.currMapName;
        };
        this.setCurrMapName = function(currMapName){
            this.currMapName = currMapName;
        };

        this.getMoney = function(){
            return this.money;
        };
        this.setMoney = function(money){
            this.money = money;
        };

        this.getCurrHp = function(){
            return this.currHp;
        };
        this.setCurrHp = function(hp){
            this.currHp = hp;
        };

        this.getGroupNum = function(){
            return this.groupNum;
        };
        this.setGroupNum = function(groupNum){
            this.groupNum = groupNum;
        };

        this.getCurrLevelFile = function(){
            return this.currLevelFile;
        };
        this.setCurrLevelFile = function(currLevelFile){
            this.currLevelFile = currLevelFile;
        };

        this.getNextLevelFile = function(){
            return this.nextLevelFile;
        };
        this.setNextLevelFile = function(nextLevelFile){
            this.nextLevelFile = nextLevelFile;
        };

        this.getIsAddFinished = function(){
            return this.isAddFinished;
        };
        this.setIsAddFinished = function(isAddFinished){
            this.isAddFinished = isAddFinished;
        };
        this.getCurrLevel = function(){
            return this.currLevel;
        };
        this.setCurrLevel = function(level){
            this.currLevel = level;
        };
    }
    //实例容器
    var instance;
    //单例
    var _static = {
        name: 'GameManager',
        getInstance: function () {
            if (instance === undefined) {
                instance = new _GameManager();
            }
            return instance;
        }
    };
    return _static;
})();

JS单例模式在工作中的使用

为了尽可能的减少全局变量的污染,在写js的时候可以采用单例模式,形式如下: 比如有一个js叫demo.js,那么我们可以在js里这样写: var demo = {} 这样做的目的是将整个js当成一个对...
  • u011277123
  • u011277123
  • 2016-09-26 10:03:52
  • 1461

JavaScript设计模式----单例模式

声明:这个系列为阅读《JavaScript设计模式与开发实践》 —-曾探@著一书的读书笔记1.单例模式的特点和定义 保证一个类仅有一个实例,并且提供一个访问它的全局访问点。 2.传统面向对象语言的...
  • yisuowushinian
  • yisuowushinian
  • 2016-07-23 11:05:50
  • 6246

JS设计模式之单例模式

JS设计模式之单例模式
  • xu_ya_fei
  • xu_ya_fei
  • 2016-05-26 11:55:01
  • 469

浅析JavaScript设计模式——单例模式

单例模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点 举一个通俗的例子,在页面中点击登录按钮,弹出了一个登录浮窗,这个登录浮窗是唯一的,无论我们单击多少次,浮窗只会创建一次其实我们可能...
  • q1056843325
  • q1056843325
  • 2016-10-26 13:38:29
  • 1219

浅谈JavaScript设计模式——单例模式

单例模式的定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单例模式是一种常用的模式,有些对象只需要一个,如线程池、全局缓存、浏览器中的window对象等,这时候可以用到单例模式。 单例模...
  • zhouziyu2011
  • zhouziyu2011
  • 2017-04-01 17:17:58
  • 472

【JS 设计模式 】用单例模式(Singleton)来封装对数据的增删除改查

单例模式单例模式的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例单例模式最初的定义出现于《设计模式》(艾迪生维斯理, 1994):“保证一个类仅有一个实例,并提供...
  • itpinpai
  • itpinpai
  • 2016-05-09 19:28:37
  • 7336

js的闭包和单例

离散数学中闭包的概念:若在一个集合上进行某种运算,其运算结果仍为集合中的元素,则称该集合为此运算上的闭包。X运算闭包=集合中元素X运算后还是X元素 “闭包” 一词来源于以下两者的结合:要执行的代码块...
  • u010958922
  • u010958922
  • 2015-04-22 00:46:22
  • 768

js面向对象编程,单例模式的一个例子

/* DataParser singleton, converts character delimited strings into arrays. */ /* Now using true p...
  • xuexiaodong2009
  • xuexiaodong2009
  • 2014-06-05 14:15:54
  • 1527

Javascript 设计模式 单例

一直很喜欢Js,,,今天写一个Js的单例模式实现以及用法。 1、单例模式的写法 单例模式写法相当简单: var singleTon = { m1: "memeber ...
  • lmj623565791
  • lmj623565791
  • 2014-06-13 16:09:16
  • 16920

js设计模式——单例/单体模式

JavaScript中的单例模式是最常用的、最基本的设计模式,它提供了一种命名空间,减少全局变量泛滥的代码管理机制; 1、最常见的单例模式: //一般用function定义的类,我才会...
  • teresa502
  • teresa502
  • 2012-02-19 17:15:34
  • 3564
收藏助手
不良信息举报
您举报文章:JS单例模式
举报原因:
原因补充:

(最多只允许输入30个字)