设计模式——单例模式

用基本数据类型来描述一件事物,需要把每一个特性都当做单独的变量进行存储,这样的话,后面如果另外一件事物的特性和这一件一样了,就会把这一件的替换掉--->全局变量的冲突,后面的会把前面的覆盖掉

   var name = "A小伙伴";
    var age = 11;

    var name = "B小伙伴";
    var age = 15;

    console.log(name);//-->"B"

  

出现了引用数据类型中的对象数据类型-->把描述同一件事物的所有属性都放在同一组下,而每一个对象都是一个单独的个体,即使两个对象的属性名一样也不会有任何的影响-->"单例模式"[其实就是一个普通的对象]
person1不仅仅叫做对象名,也叫作"命名空间",单例模式就是把描述同一件事物的属性放在了同一个命名空间下,起到了分组的作用,避免全局变量之间的相互冲突

    var person1 = {
        name: "A小伙伴",
        age: 11
    };

    var person2 = {
        name: "B小伙伴",
        age: 15
    };

    console.log(person1.name);
    console.log(person2.age)

  

用单例模式可以做什么?-->单例模式非常的重要,主要是应用单例模式可以构建最简易的模块化开发
"模块化开发":把一个复杂的页面进行团队协作开发的时候,按照相关的功能区域,划分成多个模块,每一个团队成员负责一到两个模块,各自开发,开发完成后在进行合并-->提高了开发的效率、我们可以把对应的模块写成功能组件(插件),哪个页面用直接的引入进来即可,不需要重新开发了...
例如:百度首页我们可以分为 天气、页卡、换肤、搜索、登录...模块

多个模块间会存在一些核心的、公共的方法
utils、tools...

var utils = {
    getId: function () {

    }
};


在每一个命名空间下,我们一般都会增加一个init方法,这个方法是我们当前模块的入口,在入口的这个方法中,我们进行参数的初始化、内部的方法的指定调用、相关逻辑之间的协调...,我们也把init称之为当前整个命名空间的大脑

var weatherModel = {
    show: function () {
        utils.getId();
    },
    setCity: function () {

    },
    init: function () {
        //在这里调用同一个命名空间下的方法,不需要些具体的名字(防止名字修改后,我们还需要一个个的修改),我们统一用this来代替即可
        //this-->weatherModel
        //weatherModel.show();
        //weatherModel.setCity();
        this.show();
        this.setCity();
    }
};
weatherModel.init();

var cardModel = {
    show: function () {

    }
};

  

posted @ 2015-11-24 21:03  cataway  阅读(130)  评论(0编辑  收藏  举报