单例模式是单例模式,也叫单子模式,是一种经常使用的软件设计模式。 在应用这个模式时,单例对象的类必须保证只有一个实例存在。 许多时候整个系统只须要拥有一个的全局对象,这样有利于咱们协调系统总体的行为。。(来源于维基百科)java
1.建立单例模式,案例1:其实就是建立个对象,将咱们的对象看作一我的设计模式
var person ={ height:1, name:'wy', callback:function(){ console.log(person.name); }, func:function(){ console.log('this is single function') } }
这种建立在业务中使用,这时候会有局限性,this
1.可扩展性差,若是之后在不一样场景复用,如咱们刚刚的类,若是要增长一个width属性,spa
// person.width = 1; //新增了一个height属性时候 person.height=2 //就会覆盖了原来的属性
例子明显看的出来,相互影响,耦合度很高,在业务中使用很容易会致使覆盖和重写的可能设计
2.若是咱们想一个类即能被继承,又不会改变公用的属性(方法一)code
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)
使用命名空间对不一样开发模块作区分,能有效避免这种状况。继承