设计模式及实例

代理模式

代理模式:为对象提供一个代用品或占位符,以便控制对它的访问
实例:

  • 图片的懒加载,先通过一张loading图占位,然后通过异步的方式加载图片,等图片加载好了再把完成的图片加载到img标签里面

装饰者模式

装饰者模式:在不改变对象自身的基础上,在程序运行期间给对象动态地添加方法,通常运用在原有方法维持不变,在原有方法上再挂载其他方法来满足现有需求。
实例:

  • ts 的装饰器就是一个典型的装饰者模式
  • vue 当中的 mixin

单例模式

单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。实现的方法为先判断实例存在与否,如果存在则直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象
实例:

  • vuex只有一个store实例

观察者模式和发布订阅模式

1、虽然两种模式都存在订阅者和发布者(具体观察者可认为是订阅者、具体目标可认为是发布者),但是观察者模式是由具体目标调度的,而发布/订阅模式是统一由调度中心调度的,所以观察者模式的订阅者与发布者之间是存在依赖的,而发布/订阅模式则不会。
2、两种模式都可以用于松散耦合,改进代码管理和潜在的复用。
3、在观察者模式中,观察者是知道Subject的,Subject一直保持对观察者进行记录。然而,在发布订阅模式中,发布者和订阅者不知道对方的存在。它们只有通过消息代理进行通信
4、观察者模式大多数时候是同步的,比如当事件触发,Subject就会去调用观察者的方法。而发布-订阅模式大多数时候是异步的(使用消息队列)

实例:

  • vue的响应式(发布订阅者+数据劫持)

你可能感兴趣的:(设计模式,前端)