常用的设计模式

发布-订阅模式

基于一个主题/事件通道,希望接收通知的对象(称为 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
上次更新:
贡献者: 郑壮