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

什么是单例模式

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

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)

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

关键字:JavaScript, height, function, console

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部