JavaScript 设计模式之单例模式

发布于 2021-11-22 13:00:15 字数 1422 浏览 1090 评论 0

单例模式的意思是只需要实例化某个类一次,它的方法也比较简单,通过判断某个类是否已经被实例化了,再返回该值。可以通过各种方法来实现单例模式,下面我们采取以下这种实现方式:

var single = (function(window, undefined) {
    var _u;//私有成员,
    var newModel = function() {//需要创建的类
        this.a = 'i am a';
        this.b = 'i am b';
        this.hello = 'i am a single Model';
    }
    newModel.prototype = {//原型扩展
        constructor : newModel,
        a : function() {
            console.log(a);
        },
        b : function() {
            console.log(b);
        },
        hello : function() {
            console.log(this.hello);
        }
    }
    return {
        createSingleModule : function() {//暴露共有方法
            return (_u || (_u = new newModel()));//如果该类实例过了,就返回。没有则重新实例化。
        }
    }
})(window, undefined);

通过以上代码,我们简单地实现了该模式。在实际情况中,我们可能会需要创建一个组件,这个组件是唯一一个,比如遮盖背景。在这样的情况下采用单例模式是非常明智的选择。

在使用单例的模式我们可以考虑一下几点,以帮助你判断是否应该采用此模式构建你的项目:

  1. 当类只能由一个实例,并且它很容易从公共访问点对它进行访问时候。
  2. 该类的实例是可以通过子类化进行扩展的,并且客户无需更改代码就能使用一个扩展的实例的时候。
//创建一个单例的实例化对象,不管此函数执行多少次,
// 返回的对象总是同一个。newModel只会被实例化一次。
single.createSingleModule();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

沙与沫

暂无简介

0 文章
0 评论
430 人气
更多

推荐作者

lorenzathorton8

文章 0 评论 0

Zero

文章 0 评论 0

萧瑟寒风

文章 0 评论 0

mylayout

文章 0 评论 0

tkewei

文章 0 评论 0

17818769742

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文