单例模式
单例模式「Singleton Pattern」:指一个类只有一个实例,且该类能自行创建这个实例的一种模式,为了节省内存资源、保证数据内容的一致性。
Last updated
Was this helpful?
单例模式「Singleton Pattern」:指一个类只有一个实例,且该类能自行创建这个实例的一种模式,为了节省内存资源、保证数据内容的一致性。
Last updated
Was this helpful?
Was this helpful?
function TaskManage(name) {
this.name
}
TaskManage.getInstance = (function() {
let instance = null
return function(name) {
if (!instance) {
instance = new TaskManage(name)
}
return instance
}
})()
// 获取对象1
const a = TaskManage.getInstance('a')
// 获取对象2
const b = TaskManage.getInstance('b')
// 进行比较
console.info(a === b) // true// 获取单独的实例
const singleton = function(fn) {
const instance;
return function() {
return instance || (instance = fn.apply(this, arguments));
}
}
// 个人认为这样也可以
const singleton = function(Fn) {
const instance
return function() {
return instance || (instance = new Fn(...arguments))
}
}
const taskManage = function(name){
this.name = name
}
taskManage.prototype.getName = function() {
return this.name
}const TaskManageSingleton = singleton(taskManage)
const win = TaskManageSingleton('win')
const mac = TaskManageSingleton('mac')
console.info(win.getName()) // 'win'
console.info(mac.getName()) // 'win'