/*
JS 单例模式
只能有一个实例,已经有实例则返回该实例,否则创建一个实例并返回
*/
class SignleObject {
constructor(name) {
this.name =name
}
getName() {
console.log(this.name)
}
static getInstance(name) {
if(this.instance) return this.instance
this.instance = new SignleObject(name)
return this.instance
}
}
// let a = SignleObject.getInstance('a')
// let b = SignleObject.getInstance('b')
// console.log('a == b:',a == b)
/*
工厂模式
以流水线的方式产生对象
*/
function UserFactory(name,age) {
let obj = {}
obj.name =name
obj.age = age
return obj
}
let a = UserFactory('zhangsan',18)
let b = UserFactory('lisi',20)
/*
观察者模式
又称发布订阅者模式,经典案例:事件监听,一个元素同时监听多个同类型事件,元素对象即为发布者,每一个事件处理函数即为订阅者。
*/
/*
策略模式
选择策略,返回
*/
const obj = {
A:function(name) {
return 'my name is' + name
},
B:function(name) {
return 'my name is' + name
},
C:function(name) {
return 'my name is' + name
}
}
const select = function(op,name) {
return obj[op](name)
}