IOC

简介 IOC简介 IOC全称为Invertuon Of Control,也就是控制反转。 控制反转是一种设计思想。而不是具体的技术。 IOC这种设计思想有很多方式实现,最常见的实现方式就是DI。 DI简介 DI的全称是Dependency Injection,也就是依赖注入,是IOC思想的一种实现。 依赖 什么是依赖?看下面这段代码: public class A { public B b = new B(); } 上述代码中就是A依赖B。 我再这里理解为,A对象里面持有B对象,如果B对象不存在,那么A就无法成立,所以是A对象依赖B。 注入 什么是注入呢?看下面这段代码: public class A { public B b = null; } public class B {} void Main() { var a = new A(); var b = new B(); a.b = b; } 从上面可以看出总共有两个对象,分别是a和b。可以看出现在的A对象是依赖B对象的。 **a.b=b;**这句代码就是将b对象注入到a对象的b成员中。 有时候可以把注入就理解成设置值。 依赖注入也就是吧某个对象依赖的对象进行赋值。 DI QF中的IOC QF是一种框架,是作者最近正在学习的一种框架,这个框架不要求会,我们就拿QF中的DI来进行详细的了解一下DI。 我们在使用DI方案的时候一般都离不开DI容器这个概念。育德时候DI容易也叫做IOC容器。就是:DIContainer 和 IOCContainer。 下面我们来看看QF中是如何使用IOC的。 using System.Collections; using System.Collections.Generic; using UnityEngine; namespace QF.Master.Example { public class ServiceA { public void Say() { Debug.Log("I am ServiceA:" + this.GetHashCode()); } } public class IOCExample : MonoBehaviour { // 声明为需要注入的对象 [Inject] public ServiceA A {get;set;} void Start () { // 创建实例容器 var container = new QFrameworkContainer(); // 注册类型 container.Register<ServiceA>(); // 注入对象(会自动查找 Inject Atrributet的对象) container.Inject(this); // 注入之后,就可以直接使用 A 对象了 A.Say(); } } } 上面是完整的案例,我们只要仔细看下面的代码: ...

January 15, 2022 · 4 min · LiuYingbo