关于组件的设计应该如何和面试官聊
有不少星球的小伙伴在和面试官聊的时候,经常会被问到,组件的设计是怎样的?
例如面试官问"分布式锁组件是如何设计的?",感觉自己回答的时候感觉抓不住重点。 那么针对这种问题,有没有比较好的回答流程?应该从哪些维度进行描述?最后需要达到什么深度呢?组件设计的作用
要回答上述的问题,首先我们要知道组件存在的意思是什么?当项目多了后,很有不少的功能是可以共用的,而这些公共的部分还是在每个项目都实现一遍的话,不仅重复,而且如果修改的话,还要每个项目都改一遍,这样太太浪费效率了,所以通常的做法是把这些公共的部分给抽取出来,放到一个独立的项目中,其他的项目来依赖这个独立的项目,大家就都有公共的功能了,而这个独立的项目也就是所谓的 “组件”。
到这里就可以得出一个结论,组件的最基本的作用就是 提高效率,减少开发成本。如果是有一个项目,那自然也就没有所谓的组件了。
既然知道了组件的基本作用是为了提高效率,减少开发成本,那么在组件的设计上就要从这个角度去思考,尽可能让人使用起来 简单和高效。
以分布式举例:如果让开发人员使用简单的话,就要思考在正常使用分布式锁是怎么样的?
- 引入 Redisson 的相关依赖
- 配置连接 Redisson 的地址和密码
- 引入 Redisson 的 API
- 加锁
- 执行具体的业务逻辑
- 解锁
- 如果加锁失败执行的处理策略(可以是直接抛出异常,也可以是自定义处理)
到这里关键点来了!
既然要让别人使用起来简单,那么就要思考上述的这几个步骤,哪些是公共的部分,或者可以让人使用起来不去做的呢?
答案就是:除了第 2 和 5 点,其余都是公共的,不需要开发人员去操作
那么针对于这点,就要接着思考,通常都是在方法执行逻辑,这些逻辑需要加锁,而方法又是在 Spring 中运行的,那么有没有什么相关的操作是在方法级别的呢?
到这里,你应该就想到了,那就是 AOP。AOP的特点就是在方法执行的前和后加上额外的功能,而这不就对应上了分布式锁中的加锁和解锁了吗!
组件的设计思路:
付费内容提示
该文档的全部内容仅对「JavaUp项目实战&技术讲解」知识星球用户开放
加入星球后,你可以获得:
- 超级八股文:100万+字的全栈技术知识库,涵盖技术核心、数据库、中间件、分布式等深度剖析的讲解
- 讲解文档:黑马点评Plus、大麦、大麦pro、大麦AI、流量切换、数据中台的从0到1的550+详细文档
- 讲解视频:黑马点评Plus、大麦、大麦pro、大麦AI、流量切换、数据中台的核心业务详细讲解
- 1 对 1 解答:可以对我进行1对1的问题提问,而不仅仅只限于项目
- 针对性服务:有没理解的地方,文档或者视频还没有讲到可以提出,本人会补充
- 面试与简历指导:提供面试回答技巧,项目怎样写才能在简历中具有独特的亮点
- 中间件环境:对于项目中需要使用的中间件,可直接替换成我提供的云环境
- 面试后复盘:小伙伴去面试后,如果哪里被面试官问住了,可以再找我解答
- 远程的解决:如果在启动项目遇到问题,本人可以帮你远程解决
进入星球后,即可享受上述所有服务,保证不会再有其他隐藏费用。
