作用/意义:
单例模式用于多次创建实例没有意义,甚至损坏性能的地方(如创建Db对象,连接数据库),目的是一个类只能创建出一个对象
class Db {
//ES6类的静态方法(只能直接由类名调用的方法):static getInstance
//ES6类的静态属性:直接挂载在类名上的方法,如:Db.instance()
static getInstance() {
if (!Db.instance) {
Db.instance = new Db();
return Db.instance
}
return Db.instance;
}
constructor(name, age) {
this.name = name;
this.age = age;
//在constructor里面可以初始化地(对象一创建就开始)运行对象的方法
this.connect()
}
connect() {
console.log("I am sillyB,我连接上了数据库")
}
find() {
console.log("查询数据库")
}
}
//单例模式创建对象时,不再使用类直接创建对象,而是使用类名调用类的静态方法来创建(或返回)对象
var db1 = Db.getInstance()
var db2 = Db.getInstance()
var db3 = Db.getInstance()
db1.find()
db2.find()
db3.find()
/*结果:
I am sillyB,我连接上了数据库
查询数据库
查询数据库
查询数据库*/
从运行结果来看,构造函数只运行了一次,除第一次外,每次返回的都是原来的那个对象
网友评论