前端知库

设计模式面试题

按分类查阅设计模式面试题,包含参考答案与参考资料。共 3 道题。

  • 观察者模式和发布订阅模式有什么区别?前端哪里用到了它们?

    观察者模式里,被观察的对象自己保存观察者列表,状态变了直接逐个通知。发布订阅在中间多了一个事件中心,发布者和订阅者互不认识,只按事件名通信。Vue 的响应式依赖收集接近观察者模式,EventEmitter、DOM 事件和全局事件总线是发布订阅。

  • 单例模式在前端怎样实现?ES 模块天然是单例吗?

    单例模式保证一个类只有一个实例,并提供全局访问点,常见于全局弹窗、请求客户端、store。可以用闭包或静态属性缓存实例,惰性创建。ES 模块在同一个模块图里只执行一次,导出的对象天然被共享,但多个打包副本、微前端或测试隔离时可能出现多份。

  • 策略模式和代理模式分别解决什么问题?前端怎样使用?

    策略模式把一组可以互换的算法分别封装起来,用一张表按名字选择,替代一长串 if-else,常用于表单校验和价格计算。代理模式在访问对象前加一层,控制、增强或延迟这次访问,比如缓存代理、图片懒加载,以及 Vue 3 用 Proxy 实现的响应式。