<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
单体模式:全局只维护一份实体,不管调用多少次创建代码,永远只创建一次实体(只能实例化一次对象,标签等)
单体模式的优点是:
1、可以用来划分命名空间,减少全局变量的数量。
2、使用单体模式可以使代码组织的更为一致,使代码容易阅读和维护。
3、可以被实例化,且实例化一次。
单体模式实例化对象
var Singleton = function(name){
指向创建出来的对象
this.name = name;
设置一个变量用来判断当前对象是否已经执行实例化过程
}
Singleton.prototype.getName =function(){
return this.name;
}
实例化对象
function getInstance(name){
要实现一个单体模式的话,我们无非就是使用一个变量来标识该类是否被实例化,如果未被实例化的话,那么我们可以实例化一次,否则的话,直接返回已经被实例化的对象。
//this指向window
if(!this.instance){
this.instance = new Singleton(name);
}
return this.instance;
}
调用实例化函数创建对象由于单体模式只实例化一次,因此第一次调用,返回的是kitty实例对象,当我们继续调用的时候,cat的实例就是kitty的实例,因此下面都是打印的是kitty; 所以用的同一块空间。
var hellokity = getInstance('kitty');
var cat = getInstance('cat');
console.log(hellokity.getName());
console.log(cat.getName());
</script>
</head>
<body>
</body>
</html>