03.Javascript设计模式之单例模式----Singleton

 

03.Javascript设计模式之单例模式----Singleton

本文主要探讨Javascript中设计模式之一:单例模式(Singleton)

J2EE中的单例模式

众所周知,单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。在J2EE的设计模式中,单例模式有懒汉式和饿汉式之分,下面先看看这两种单例模式的表现形式

  1. 懒汉式的单例模式

    Java Code
    public class Singleton {
        private Singleton {
        }
        private static Singleton _singleton = null;
        public static Singleton getInstance(){
            if(_singleton == null){
                _singleton = new Singleton();
            }
            return _singleton;
        }
    
        //Properties can be defined here!
        private String _name;
        public String getName(){
            return this._name;
        }
        public void setName(String _sName){
            this._name = _sName;
        }
    }
    

     

  2. 饿汉式的单例模式

    Java Code
    public class Singleton {
        private Singleton {
        }
        private static Singleton _singleton = new Singleton();
        public static Singleton getInstance(){
            return _singleton;
        }
    
        //Properties can be defined here!
        private String _name;
        public String getName(){
             return this._name;
        }              
        public void setName(String _sName){
            this._name = _sName;
        } 
    }
    

     

  3. 单例的获取 针对如上两种形式的单例模式,我们可以这样获得其实例:

    Singleton mySingleton = Singleton.getInstance();
    mySingleton.setName("赵先烈");
    System.out.println(mySingleton.getName()); //output:赵先烈
    

Javascript中的单例模式

在Javascript中,有很多种方式可以模拟单例模式,在这里,我采用如下的方式来模拟,模拟之不当,还请指教

  1. 懒汉式的单例模式

    Javascript Code
    var Singleton = (function(){
        var _SingletonClass = function(){
            //Other code can be write here!
        };
        var _singleton = null;
        var _getInstance = function(){
            if(!_singleton){
                _singleton = new _SingletonClass();
            }
            return _singleton;
        };
    
        //Properties can be defined here!
        var _name = null;
        var _getName = function(){
            return _name;
        };
        var _setName = function(_sName){
            _name = _sName;
        };
    

    _SingletonClass.prototype = { getName: _getName, setName: _setName }; return { getInstance: _getInstance };
    })();

     

  2. 饿汉式的单例模式

    Javascript Code
    var Singleton = (function(){
        var _SingletonClass = function(){
            //Other code can be write here!
        };
        var _singleton = new _SingletonClass();
        var _getInstance = function(){
            return _singleton;
        };
    
        //Properties can be defined here!
        var _name = null;
        var _getName = function(){
            return _name;
        };
        var _setName = function(_sName){
            _name = _sName;
        }

    _SingletonClass.prototype = { getName: _getName, setName: _setName }; return { getInstance: _getInstance };
    })();
  3. 单例的获取 针对如上的两种形式,Javascript中的单例可以这样获得:

    var mySingleton = Singleton.getInstance();
    mySingleton.setName("赵先烈");
    alert(mySingleton.getName()); //output:赵先烈
    

总结

本文主要通过与Java对比的形式来模拟Javascript中的单例模式,是为了让人更明白在Javascript中,单例模式是什么,如何实现。仅此而已。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值