设计模式面试题
设计模式面试题
责任链模式?
是一个请求有多个对象来处理,这些对象是一条链,但具体由哪个对象来处理,根据条件判断来确定,如果不能处理会传递给该链中的下一个对象,直到有对象处理它为止。
将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,直到链上的某个接收对象能够处理它为止。
以上定义来自《设计模式之美》
责任链模式和分发模式的区别
观察者模式和 callback 有什么区别?什么时候用观察者,什么时候用 callback?
观察者模式和回调函数模式及其相似,差别仅在于在观察者模式中,被观察者维护这一个观察者列表,而在回调模式中,” 被观察者 “ 只是保存了一个 “ 观察者 “。这就是形式上的终极区别。
也就是说,回调函数是一种特殊的观察者模式,是一种一对一的观察者模式。
如果用 List 保存了多个 callback,callback 和观察者模式没啥区别
状态机
有限状态机(finite state machine)简称 FSM;状态机就是包含多个状态的数学模型,并可以在状态之间进行变换并且触发一些动作。
一个状态机一般包含以下几个元素:
- State 当前状态
- Event 触发事件
- Transition 状态变换,或者说下一个状态 (次态)
- Action 要执行的动作
面试题
项目中用了哪些设计模式?
- 单例
- 构建者模式
- 简单工厂模式
- 代理模式
- 模板方法
- 责任链模式
- 状态模式
本文由作者按照 CC BY 4.0 进行授权