到底什么是IOC和AOP,用一个做菜的例子来形象解释。


前段时间新校招的师弟入职了,问到底什么是IOC和AOP,导师给举了个例子,挺形象的,记录一下分享给大家。

1、IOC(控制反转)

通俗的比喻:

想象你是一个厨师(类),你需要在厨房里做各种菜肴(功能)。传统做法是你自己去市场(创建对象)买食材(依赖),然后做菜(业务逻辑)。这就像在传统编程中,你的代码会直接创建和管理它所需的各种对象和服务。

使用 IOC

现在,假设你有一个专门的采购员(Spring 容器),他的工作就是负责购买所有的食材,并把它们送到你的厨房。你只需要告诉采购员你需要哪些食材(依赖),他就会把食材准备好并送到你那里。这样,你可以专注于做菜(业务逻辑),而不用关心食材的来源和管理(对象的创建和依赖管理)。

优点:

  • 解耦: 你只需关注做菜,食材的采购由采购员负责,这样做菜和食材准备就分开了,维护起来更简单。
  • 灵活性: 如果你换了采购员或者换了市场,你的做菜流程(业务逻辑)不需要改动。

2、AOP(面向切面编程)

通俗的比喻

继续用做菜的例子来说明,假设你在做菜时总是需要加盐(切面),而这并不是做菜的主要工作。你每次做菜时,都需要在某个步骤加入盐。这时候,你可以考虑用一个专门的助手来帮忙,每次做菜时,助手都会在你指定的步骤自动加入盐。

使用 AOP

现在,假设你有一个智能厨房(Spring AOP),它有一个自动化的助手(切面)。这个助手负责在每次做菜时,自动在你指定的步骤添加盐(横切关注点),你不需要每次都手动添加,助手会自动处理。

优点

  • 模块化: 盐的添加逻辑和做菜的逻辑分开了,盐的添加过程(切面)和具体做菜的过程(业务逻辑)解耦了。
  • 代码复用: 如果你需要在多个菜肴中添加盐,助手(切面)可以自动处理,无需在每个菜肴的做法中重复添加盐的步骤。

3、总结

IOC 就像把创建和管理食材的任务交给采购员,你只需要专注于做菜,简化了代码中的依赖管理。
AOP 就像有一个助手在每次做菜时自动添加盐,这样你可以把横切关注点(如日志、事务管理)从业务逻辑中分离出来,使得代码更清晰和维护更容易。
这两个概念结合起来使用,可以让代码更加灵活、可维护和模块化。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农小C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值