龙空技术网

「Java面试」这道面试题不会?请你介绍下策略模式和观察者模式?

跟着Mic学架构 1546

前言:

现时大家对“观察者模式 面试”可能比较珍视,朋友们都需要学习一些“观察者模式 面试”的相关文章。那么小编同时在网摘上网罗了一些关于“观察者模式 面试””的相关文章,希望各位老铁们能喜欢,你们快快来了解一下吧!

一个工作了5年的粉丝,去字节面试,在第一面遇到这样一个问题

“请你介绍一些策略模式和观察者模式?”

这个粉丝思路突然就短路了,不知道该怎么回答?

他要是早点看到这篇文章,估计就已经拿到Offer了。

经常有同学在后台跟我吐槽在求职过程中遇到的各种面试难题。

我发现大部分的问题之前的视频都有分析过,考虑到视频可能太过分散,不方便大家学习所以我系统整理了一份20万字的文档 有需要的Si信我发送“Mic”领取。

问题分析

在Java里面,有23种设计模式

而在实际开发中,用到的设计模式屈指可数,主要有两方面的原因

目前的开发模式,基本上按照MVC这一套在搞,大部分业务逻辑的实现都不复杂对设计模式的理解不够,只能生搬硬套,不仅仅没带来好处,还让程序处理变得更麻烦

但是,设计模式确实是无数前辈在软件开发过程中总结的一些经验,他们能够使得程序更加灵活可扩展,有人把它总结成了公式化的23种设计模式,导致大家以为按照这个公式去搬运就可以,但实际上我认为。

设计模式应该是一种软件设计的思想或者方法论,它不应该固化成某种特定的公式,它的运用应该更加灵活。

这23种设计模式可以分成三种类型分别是创建型、结构型、行为型。

策略模式和观察者模式属于行为型模式。

行为型模式主要用来描述多个类和对象之间的相互协同完成单个对象无法单独完成的任务,除了这两种以外,还包括模版方法、状态模式、责任链模式、解释器模式等。

高手:

策略模式和观察者模式属于行为型模式。

策略模式主要是用在根据上下文动态控制类的行为的场景,

一方面可以解决多个if...else判断带来的代码复杂性和维护性问题另一方面,把类的不同行为进行封装,使得程序可以进行动态的扩展和替换,增加了程序的灵活性。

像支付路由这种场景,就可以使用策略模式实现。

观察者模式主要用在一对多的对象依赖关系的中,实现某一个对象状态变更之后的感知的场景

一方面可以降低对象依赖关系的耦合度,弱化依赖关系。另一方面,通过这种状态通知机制,可以保证这些依赖对象之间的状态协同。

在Spring源码里面有大量运用这种观察者模式实现事件的传播和感知。

总结

要想真正理解设计模式的精髓并且能灵活运用,需要多去阅读一些优秀的源码,比如Spring,否则设计模式永远只会停留在纸上无法落地。

今天的文章就到这里了,喜欢我作品的同学记得转发、收藏、点赞!!!

最新的资料文档已整理,包含如下↓(还在持续更新中!):

①100道最新大厂经典面试题解析资料文档!

②20万+字Java面试题解析和配套答案!

③从应届生到高级开发都适用的简历模板!

④从入门到精通的架构师学习路线图!

⑤还有各种技术流程图,路径图!

有需要的 Si 我 “Mic”拿!

标签: #观察者模式 面试