zoukankan      html  css  js  c++  java
  • JavaScript设计模式之单例模式

    一、单例模式概念

    单例就是保证一个类只有一个实例,实现方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象。在JavaScript里,单例作为一个命名空间提供者,从全局命名空间里提供一个唯一的访问点来访问该对象。

    二、单例模式的作用和注意事项

    模式作用:

    1、模块间通信

    2、系统中某个类的对象只能存在一个

    3、保护自己的属性和方法

    注意事项:

    1、注意this的使用

    2、闭包容易造成内存泄露,不需要的要赶快干掉

    3、注意new的成本。(继承)

    三、单例模式代码和实战总结

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    
    <!--<script>
        var Singleton = (function(){
            var instantiated;
            function init(){
                /*这里定义单例代码*/
                return{
                    publicMethod:function(){
                        console.log("hello world");
                    },
                    publicProperty:"test"
                };
            }
    
            return{
                getInstance:function(){
                    if(!instantiated){
                        instantiated = init();
                    }
                    return instantiated;
                }
            }
        })();
    
        Singleton.getInstance().publicMethod();
    </script>-->
    
    <script>
         /*1.独立的对象 建2个一个xiaowang一个xiaoli
         2.让xiaoli跟xiaowang通过门铃进行通信
         3.先看一下xiaowang家有没有门 如果油门直接通过门铃通讯didi如果没有门先建门
         4.两个单例之间看是通讯*/
        var xiaowang = (function(argument){
            var men;
            var xiaowangjia = function(msg){
                this.menling = msg;
            }
            var info = {
                sendMessage:function(msg){
                    if(!men){
                        men = new xiaowangjia(msg);
                    }
                    return men;
                },
                abc:function(){
                    return 123;
                }
            };
            return info;
        })();
        var xiaoli = {
            callXiaowang:function(msg){
                var _xw = xiaowang.sendMessage(msg);
                alert(_xw.menling);
                console.log(_xw.menling);
                _xw = null;//等待垃圾回收
    
                var abc = xiaowang.abc();
                console.log(abc);
            }
        }
        xiaoli.callXiaowang("didi");
    </script>
    </body>
    </html>

     其他设计模式链接:

  • 相关阅读:
    Threaten Model
    什么是虚拟主机
    http代理服务器
    什么是https
    缓存的实现原理
    Cookie和Session
    HTTP协议详解
    心路历程——毕设程序mr跑不通的问题
    bash: hadoop:command not found
    Mapreduce 测试自带实例 wordcount
  • 原文地址:https://www.cnblogs.com/cangowu/p/5062130.html
Copyright © 2011-2022 走看看