文章

设计模式面试题

设计模式面试题

责任链模式?

是一个请求有多个对象来处理,这些对象是一条链,但具体由哪个对象来处理,根据条件判断来确定,如果不能处理会传递给该链中的下一个对象,直到有对象处理它为止。

将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,直到链上的某个接收对象能够处理它为止。
以上定义来自《设计模式之美》

责任链模式和分发模式的区别

观察者模式和 callback 有什么区别?什么时候用观察者,什么时候用 callback?

观察者模式和回调函数模式及其相似,差别仅在于在观察者模式中,被观察者维护这一个观察者列表,而在回调模式中,” 被观察者 “ 只是保存了一个 “ 观察者 “。这就是形式上的终极区别。
也就是说,回调函数是一种特殊的观察者模式,是一种一对一的观察者模式。
如果用 List 保存了多个 callback,callback 和观察者模式没啥区别

状态机

有限状态机(finite state machine)简称 FSM;状态机就是包含多个状态的数学模型,并可以在状态之间进行变换并且触发一些动作。
一个状态机一般包含以下几个元素:

  1. State 当前状态
  2. Event 触发事件
  3. Transition 状态变换,或者说下一个状态 (次态)
  4. Action 要执行的动作

面试题

项目中用了哪些设计模式?

  1. 单例
  2. 构建者模式
  3. 简单工厂模式
  4. 代理模式
  5. 模板方法
  6. 责任链模式
  7. 状态模式
本文由作者按照 CC BY 4.0 进行授权