设计模式
一. 单例模式
1. 定义
顾名思义,单例就是单一的意思,单例模式的定义是:保证一个类只有一个实例,并提供一个访问它的全局访问点
2. 思路
新建对象时判断全局是否有该对象,如果有,就返回该对象,没有就创建一个新对象返回
3. 实现如下
var Single = (function() {
var instance = null;
function Single(name) {
this.name = name
}
return function(name) {
if(!instance){
instance = new Single(name)
}
return instance;
}
})();
4.ES6实现
class Single {
constructor(name) {
this.name = name;
this.instance = null;
}
static getInstance(name) {
if(!this.instance) {
this.instance = new Single(name)
}
return this.instance
}
}
二. 观察者模式
1. 定义
观察者模式又叫发布订阅者模式,它定义了对象间的一种一对多的依赖关系。观察者模式让两个对象松耦合地联系在一起,虽然影响不太清楚彼此的细节,但这不影响它们之间的互相通信
2. 思路
定义一个对象,在对象中实现注册事件,关闭事件和触发事件
3. 实现
let Observer = {
data:{},
//订阅
register: function(event, func){
!this.data[event] && this.data[event] =[];
this.data[event].push(func);
},
//发布
triggle: function(event) {
let eventList = this.data[event];
if(eventList){
for(let i of eventList){
i();
}
}else{
return false;
}
},
//退订
off: function(event, func) {
let eventList = this.data[event];
if(!eventList){
return false
}else{
if(eventList.indexOf(func) !== -1){
eventList.splice(eventList.indexOf(func),1);
}
}
if(!eventList.length) {
delete this.data[event];
}
}
}