
IoC 反转理解和简单实现
type
status
date
slug
summary
tags
category
icon
password
📝 控制反转
“控制反转”是一种软件设计原则。可以用一个简单的类比来理解,就好像你原本自己负责准备晚餐(自己创建和管理对象),现在变成了别人为你准备好晚餐并端给你(对象的创建和管理由框架或其他外部机制来负责)。在编程中,控制反转意味着控制权从应用程序代码转移到了外部的框架或容器,使得程序的结构更加灵活和可扩展。 但对于编程新手来说,这个概念可能比较抽象和难以一下子理解。
IoC有何实现方式?
最经典的方法是基于依赖注入(DI)的控制反转(IoC)
首先, 这是使用装饰器实现的,所以要了解一下装饰器的使用:
开始之前,我打算参考Nestjs的装饰器用法,使用
@Injectable
和@Inject
实现依赖注入的声明。1 先写一个简单的依赖注入管理容器
di_container
,负责控制反转的托管然后,编写
@Injectable
和@Inject
装饰好,接下来,几个类
Aftermarket、Rate、Share、Order
,其中Order
依赖其他几个类目前,框架全部搭建完成,接下来运行起来

总结一下
在上述示例中,这是简单实现了单例模式的依赖注入。实际上,健全的框架需要考虑依赖循环、多种注入模式等。此外,通过反射元数据,可以在运行时确定一个类的依赖关系。比如,在一个大型的企业级应用中,有许多不同的服务类,使用
reflect - metadata
可以标记某个类需要哪些其他类作为依赖,然后在依赖注入容器中进行自动注入。