js设计模式之——单例模式

185 阅读1分钟

JS中一个最基础,但是也是业务逻辑开发中常用到的设计思想:“单例设计模式”(框架开发模式下无需用单例处理)最早的模块开发思想(AMD/CMD/CommonJS/ES6Module)

举例:

A开发天气版块

weatherModule除了是全局变量、模块名称、对象名,更专业的叫法是“命名空间”,这样单例设计模式就是把描述相同事务(相同版块)中的属性和方法,归拢到相同的命名空间下,实现分组管理(既可以避免全局变量污染、也可以实现模块之间的相互调用)

let weatherModule = (function () {
    let index = 0;
    function queryData() {}
    function getElement() {}
    // 想让闭包之外的东西调用方法,可以基于WINDOW.XXX把其暴露到全局上(如果向全局暴露的东西过多,也会存在冲突的问题)
    // window.getElement = getElement;
 
    // 建议使用RETURN的方式
    return {
        // getElement: getElement
        getElement
    };
})();
weatherModule.getElement();

B开发资讯版块

let informationModule = (function () {
    let index = 0;
 
    function queryData() {}
 
    function bindHTML() {}
 
    function handleEvent() {}
 
    // ......
 
    return {
        // init:function(){}
        init() {
            // 在单例设计模式的基础上,增加一个命令模式,init作为当前模块业务的入口,以后只需要执行informationModule.init(),我们在init中根据业务需求,把编写的方法按照顺序依次调用执行即可
            queryData();
            bindHTML();
            handleEvent();
        }
    };
})();
informationModule.init(); */