编辑
2025-09-24
C#
00

目录

摘要
正文

摘要

控制反转(IoC)是面向对象编程中的一种设计原则,旨在降低代码之间的耦合度。其中,依赖注入(DI)是最常见的方式之一,它允许一个调控系统控制并传递对象所依赖的对象的引用,从而实现依赖的注入。此外,还有一种称为“依赖查找”(DL)的方式,它通过在对象被创建时将依赖项传递给它,从而将依赖注入到对象中。这样可以减少代码之间的耦合度,使程序更加灵活和可扩展。

正文

image.png

我们先理解一下控制是什么?

如果我们要采集一个设备的信息?一般有几步?

  1. 设置连接信息IP+端口
  2. 打开连接
  3. 读取信息
  4. 关闭连接

伪代码如下

C#
static void Main(string[] args) { Collect(); } static void Collect() { connection("127.0.0.1", 8080); conect(); read(address); close(); }

这个是标准写法,现在我们要在连接前关闭其它连接代码修改:

C#
static void Collect() { closeall(); connection("127.0.0.1", 8080); conect(); read(address); close(); }

你会发现,所有代码都是一行行一下按业务逻辑写下来的。

准备反转

如果我们发现这个设备非常智能,调用他的read一个就可以读到了,不需要一步步,又是连接,又是关闭了。

C#
internal class Program { static void Main(string[] args) { Equipment equipment =new Plc(); //这个是基类,也就是框架提供的,他包括连接,打开,关闭等操作 equipment.read("address"); } } class Equipment { public void read(string address) { //connection("127.0.0.1", 8080); //conect(); //read(address); //close(); } } class Plc : Equipment { /// <summary> /// 这个需要我们自己定义 /// </summary> /// <param name="address"></param> public void readInfo(string address) { } }

程序流程控制权发生了反转,控制权由我们自己的代码转移到了框架中

控制反转前后有哪些变化呢?

  • 反转前:我们自己的代码决定程序的工作流程,并调用第三方代码(我们自己的代码是甲方,第三方代码是乙方)
  • 反转后:第三方代码(框架)决定程序的工作流程,并调用我们写的代码(我们自己的代码是乙方,第三方代码是甲方)

有什么好处?

复用代码有三种方式:类库、框架、设计模式。

  • 类库:强调代码复用; 定义一组可复用的代码,供其他程序调用,拿来主义,别人的东西拿来用,用别人的锤子砸核桃。
  • 框架:强调设计复用; 定义程序的体系结构,开发人员通过预留的接口插入代码(做填空题)
  • 设计模式:复用解决方案; 设计模式提供了解决一类问题的有效经验,复用这些经验往往可以很好地解决问题

框架的出现为我们提供了一种定义问题解决流程和体系结构的方法,但对于特定问题的解决,需要针对其具体细节进行定制。因此,控制反转技术可以通过调用我们编写的代码,将框架与具体细节进行结合,实现更高效的程序开发。

反转的目的

从怎么创建一个对像,到我要一个对像,不去关心一个对像是怎么做的

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!