跳到主要内容

关于组件的设计应该如何和面试官聊

有不少星球的小伙伴在和面试官聊的时候,经常会被问到,组件的设计是怎样的?

例如面试官问"分布式锁组件是如何设计的?",感觉自己回答的时候感觉抓不住重点。 那么针对这种问题,有没有比较好的回答流程?应该从哪些维度进行描述?最后需要达到什么深度呢?

组件设计的作用

要回答上述的问题,首先我们要知道组件存在的意思是什么?当项目多了后,很有不少的功能是可以共用的,而这些公共的部分还是在每个项目都实现一遍的话,不仅重复,而且如果修改的话,还要每个项目都改一遍,这样太太浪费效率了,所以通常的做法是把这些公共的部分给抽取出来,放到一个独立的项目中,其他的项目来依赖这个独立的项目,大家就都有公共的功能了,而这个独立的项目也就是所谓的 “组件”。

到这里就可以得出一个结论,组件的最基本的作用就是 提高效率,减少开发成本。如果是有一个项目,那自然也就没有所谓的组件了。

既然知道了组件的基本作用是为了提高效率,减少开发成本,那么在组件的设计上就要从这个角度去思考,尽可能让人使用起来 简单和高效。

以分布式举例:如果让开发人员使用简单的话,就要思考在正常使用分布式锁是怎么样的?

  1. 引入 Redisson 的相关依赖
  2. 配置连接 Redisson 的地址和密码
  3. 引入 Redisson 的 API
  4. 加锁
  5. 执行具体的业务逻辑
  6. 解锁
  7. 如果加锁失败执行的处理策略(可以是直接抛出异常,也可以是自定义处理

到这里关键点来了!

既然要让别人使用起来简单,那么就要思考上述的这几个步骤,哪些是公共的部分,或者可以让人使用起来不去做的呢?

答案就是:除了第 2 和 5 点,其余都是公共的,不需要开发人员去操作

那么针对于这点,就要接着思考,通常都是在方法执行逻辑,这些逻辑需要加锁,而方法又是在 Spring 中运行的,那么有没有什么相关的操作是在方法级别的呢?

到这里,你应该就想到了,那就是 AOP。AOP的特点就是在方法执行的前和后加上额外的功能,而这不就对应上了分布式锁中的加锁和解锁了吗!

组件的设计思路:

付费内容提示

该文档的全部内容仅对「JavaUp项目实战&技术讲解」知识星球用户开放

加入星球后,你可以获得:

  • 超级八股文:100万+字的全栈技术知识库,涵盖技术核心、数据库、中间件、分布式等深度剖析的讲解
  • 讲解文档:黑马点评Plus、大麦、大麦pro、大麦AI、流量切换、数据中台的从0到1的550+详细文档
  • 讲解视频:黑马点评Plus、大麦、大麦pro、大麦AI、流量切换、数据中台的核心业务详细讲解
  • 1 对 1 解答:可以对我进行1对1的问题提问,而不仅仅只限于项目
  • 针对性服务:有没理解的地方,文档或者视频还没有讲到可以提出,本人会补充
  • 面试与简历指导:提供面试回答技巧,项目怎样写才能在简历中具有独特的亮点
  • 中间件环境:对于项目中需要使用的中间件,可直接替换成我提供的云环境
  • 面试后复盘:小伙伴去面试后,如果哪里被面试官问住了,可以再找我解答
  • 远程的解决:如果在启动项目遇到问题,本人可以帮你远程解决
进入星球后,即可享受上述所有服务,保证不会再有其他隐藏费用。
知识星球二维码

1. 打开微信 -> 扫描左侧二维码 -> 加入「JavaUp项目实战&技术讲解」知识星球

2. 查看星球使用指导,获取完整项目讲解资料索引

👉 点击解锁全部付费内容
🎁优惠