资讯专栏INFORMATION COLUMN

谈谈JS设计模式和应用场景一(单例模式)

MSchumi / 790人阅读

摘要:什么是单例模式单例模式是单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。

什么是单例模式

单例模式是单例模式,也叫单子模式,是一种常用的软件设计模式。 在应用这个模式时,单例对象的类必须保证只有一个实例存在。 许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。。(来源于维基百科)

1.创建单例模式,案例1:其实就是创建个对象,将我们的对象看做一个人

var person ={
    height:1,
    name:"wy",
    callback:function(){
        console.log(person.name);
    },
    func:function(){
      console.log("this is single function")
    }
}

这种创建在业务中使用,这时候会有局限性,

1.可扩展性差,如果以后在不同场景复用,如我们刚刚的类,如果要增加一个width属性,

    
    //
    person.width = 1;
    //新增了一个height属性时候
    
    person.height=2
    //就会覆盖了原来的属性
   

例子明显看的出来,相互影响,耦合度很高,在业务中使用很容易会导致覆盖和重写的可能

2.如果我们想一个类即能被继承,又不会改变公用的属性(方法一)

var person =function(){
    
    this.height=1;
    this.name="wy"
    this.callback=function(){
        console.log(person.name);
    },
    this.func=function(){
      console.log("this is single function")
    }
    
}

var girl = new person;
var boy = new person;

girl.height = 2;
boy.height = 3;

console.log(boy.height,girl.height);

这样即可以实现多态和继承,相互又是独立的,但是在业务上使用会出现一个问题,就是名字重复时候,会导致所有属性出问题,于是再次扩展实现方式

(function(){
    
    var Namespace = Namespace||{};
    Namespace.person = function(){
    
        this.height=1;
        this.name="wy"
        this.callback=function(){
        console.log(person.name);
        },
        this.func=function(){
          console.log("this is single function")
        }
    
    } 

    if(window)
    window.Namespace = Namespace||{};

})(window,undefined)

var person = new Namespace.person;
var person2 = new Namespace.person;
console.log(person.height,Namespace,person)

使用命名空间对不同开发模块做区分,能有效避免这种情况。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/80035.html

相关文章

  • 写代码也有“套路”-谈谈设计模式

    摘要:所以设计模式其实就是在前人各种踩坑经验之上,总结出的各种开发套路。但更好的套路是使用单例模式它可以保证只创建一个对象第一次访问时创建,之后访问时直接返回已有对象,并提供全局的访问。因此也有很多人对于设计模式的价值存在质疑。 编程教室开了这么久,已经有很多人从完全零基础的小白成为了会写代码的菜鸟程序员,能够自己独立开发程序。不过到此阶段,常常会遇到瓶颈,感觉功能可以实现,但代码看起来有些...

    tain335 评论0 收藏0
  • 面试官:“谈谈Spring中都用到了那些设计模式?”。

    摘要:会一直完善下去,欢迎建议和指导,同时也欢迎中用到了那些设计模式中用到了那些设计模式这两个问题,在面试中比较常见。工厂设计模式使用工厂模式可以通过或创建对象。 我自己总结的Java学习的系统知识点以及面试问题,已经开源,目前已经 41k+ Star。会一直完善下去,欢迎建议和指导,同时也欢迎Star: https://github.com/Snailclimb... JDK 中用到了那...

    Astrian 评论0 收藏0
  • 职责原则之模式的黄金法则

    摘要:今天说一下,单一职责原则。比如,接口的地址本来已经很完美了,但是你的是处女座最讨厌处女座非要给路由添加几个以保证后台数据的安全。为了过年,我会选择使用,因为不知道处女座以后会做出什么傻事来。此时的使用动态织入后,可以完美的解决处女座。 在设计模式中,有着几条视为黄金原则,设计模式都是围绕黄金原则,对代码或者说是架构设计做出一些相应的调整,久而久之,GoF 4人组,发现其实有些设计思想可...

    GeekQiaQia 评论0 收藏0
  • H5学习

    摘要:为此决定自研一个富文本编辑器。本文,主要介绍如何实现富文本编辑器,和解决一些不同浏览器和设备之间的。 对ES6Generator函数的理解 Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。 JavaScript 设计模式 ② 巧用工厂模式和创建者模式 我为什么把他们两个放在一起讲?我觉得这两个设计模式有相似之处,有时候会一个设计模式不能满...

    aristark 评论0 收藏0

发表评论

0条评论

MSchumi

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<