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当成一个对...

js-单例模式

当我们需要利用 js 创建一个类的唯一对象时,应该如何实现呢?   这时单例模式的价值就体现出来了,在学习单例模式之间 先看看这个代码 function Cat () { ...

js单例模式

一.单例模式特点:Singleton不同与静态类(或对象)因为我们可以推迟他们的初始化,这通常是因为它们需要一些信息,而这些信息在初始化期间可能无法获得,这不同与程序一开始就初始化的模块模式。====...

JS的平凡之路--单例模式的各种实现方式

单例模式:保证一个类有且仅有一个实例,并且有一个全局访问点。虽然JavaScript中没有类的概念,但是我们依旧可以用很多方式模拟单例模式。 一、全局变量实现单例模式  用全局变量实现的单例模式: ...

JS学习十六天----单例模式

单例模式 说实话,今天本来不想写博客的,但是思前想后,与其看看片,不如打打字(炮),还是写一点吧,不多写个最简单的的,别看简单,但是很常用啊! 今天发现了一个好东西叫做基维百科,我在里面看到了关于...

Node.js单例模式

Node.js 单例模式实现

JS设计模式 - 单例模式

JS设计模式 - 单例模式 最近在看设计模式,首先了解的是单例模式。在网上看了一博客,但是感觉自己没有找到想要抓住的点。所以自己记录一些在学习看的过程中的一些想法。 1. 简介 单例...
  • It_rod
  • It_rod
  • 2017年11月18日 23:22
  • 139

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

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

JS 设计模式之 单例模式

在传统开发工程师眼里,单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象。在JavaScript里,单例作...

js 设计模式 第五章 单例模式

单例模式 why? 1 解决global variables 过多的问题。你懂的。__.dom,__.event,这里__就是个单例对象,所有的dom及event都放在__里面,不用再放在...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JS单例模式
举报原因:
原因补充:

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