常用的设计模式
发布-订阅模式
基于一个主题/事件通道,希望接收通知的对象(称为 subscriber)通过自定义事件订阅主题,被激活事件的对象(称为 publisher)通过发布主题事件的方式被通知。
发布-订阅模式的角色有两类:发布者和订阅者
document.addEventListener('click', () => {
console.log("You click me!");
},false)
代理模式
我们在事件代理的时候其实就是使用了代理模式,通过把监听事件全部交由父节点进行监听,这样你添加节点或者删除节点的时候就不用去改变监听的代码。
<ul id="ul">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<script>
let ul = document.querySelector('#ul');
ul.addEventListener('click', (event) => {
console.log(event.target);
})
</script>
单例模式
单例模式就是保证一个类仅有一个实例,并提供一个访问它的全局访问点。其实这有一点像我们 vuex 当中的实现,也是一个全局的状态管理,并且提供一个接口访问。
工厂模式
故名思意,我们从字面上的意思就可以看到,可以想象一座工厂源源不断产出一样的产品,流水线作业。没错,工厂模式就是这样。
class Person {
constructor(name) {
this.name = name;
}
getName() {
console.log(this.name);
}
}
class Factory {
static create(name) {
return new Person(name);
}
}
Factory.create("alanwu").getName(); //alanwu