javascript的单体模式(零)

本文介绍了单体模式的基本概念,通过JavaScript实现了一个简单的单体结构,并展示了如何利用闭包实现私有化,最后讨论了单体模式的优点,如惰性加载和避免全局变量污染。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

掉了这个模式了,补上。

实现一个简单的单体结构:

var Student = {
    age: 10,
    name: '张三',
    getAge: function(){

       return this.age;
    },
    getName: function(){

       return this.name;
    },

}

console.log(Student.getAge()); //目的达到了,可以获取信息,但是没有保护,我只是让你获取姓名,你却可以修改Student.name = '李四'

// 使用闭包来私有化,阻止外界访问

var Student = (function(){
    var _name = '张三';
    var _age = 10;
    function _getAge(){return _age}
    function _getName(){return _name}
    
    return {
         getAge: function(){return _getAge()},
         getName: function(){return _getName()}

    }


})()

console.log(Student.getAge()) //这样就安全了、、

//这样虽然功能实现了,但是性能还待优化,我为何不能在使用的时候才初始化实例呢?也就是所谓的惰性加载


var Student = (function(){
    var _instance;
    function constructor(){
        var _name = '张三';
        var _age = 10;
    
        function _getAge(){return _age}
        function _getName(){return _name}
    
        return {
            getAge: function(){return _getAge()},
             getName: function(){return _getName()}

        }
    }
    return {
        getInstance: function(){
       
            return _instance || (_instance = constructor());
        }
    }


})()

console.log(Student.getInstance().getAge()) //哈哈,有意思把?

单体模式优点:

1.  可以来划分命名空间,从而清除全局变量所带来的危险,不污染全局变量。

2. 惰性加载实例。

转载于:https://my.oschina.net/shyl/blog/678599

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值