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 依赖其他几个类
 
目前,框架全部搭建完成,接下来运行起来
notion image
 
 

总结一下

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

© ittat 2016-2025