Unity3D的MVC框架(一)——StrangeIOC与Extension的扩展介绍

Unity3D的MVC框架(一)——Strange IOC与Extension的扩展介绍

StrangeIoC框架是一个超轻量级和高度可扩展反转(IOC)框架,专门为c#和Unity编写,它是基于MVC框架扩展的。即MVCS框架。M(models),V(view),C(controller),S(services)。详细的信息可以查看其官方文档。
作为一款依赖注入/控制反转(IOC)的MVC框架,StrangeIoC除了使我们的程序结构更加解耦合理外,还为我们提供了大量方便的功能(这里主要是和PureMVC进行对比)。

Extensions

该框架的应用是以extension的扩展为基础的,主要的扩展如下:

Injection extension

Injection的扩展可以说是松耦合绑定的基础,使逻辑和显示分离得以实现,正如官方文档所言,很多人将StrangeIoc这套框架成为Dependency Injection框架, 这个其实是由Injection扩展来是实现的,具体的类图如下:
在这里插入图片描述

在我们使用Injection的时候,需要注意下列事项

  1. 循环依赖问题,Injection框架可以帮我们检查这样的错误并且抛出异常,但是我们最好在写代码的时候防止这么做,下面就是一个简单的例子,在实际情况中的依赖可能比这个负责,比如,A - >B -> C- >D,而D最后又需要A。
  2. Injection 是利用反射来实现,反射比较慢,我们可以利用ReflectionBinder中的RefectAll提前来完成反射。
  3. 我们必须记住的是,任何的依赖都需要binding去记住mapping,如果我们忘记了增加Binding,就会产生空对象异常, Injection会帮助我们查看这些错误。我们必须记住的是,任何的依赖都需要binding去记住mapping,如果我们忘记了增加Binding,就会产生空对象异常, Injection会帮助我们查看这些错误。

Dispatcher extension

Event Dispatcher 和Singal都可以看作是Dispatcher的扩展,其实就是一种Observer设计模式的松耦合实现。基本的类关系图如下:
在这里插入图片描述

在这里插入图片描述

本质上都是Observer的实现方式,下面的Command extension 和Mediator extension都会用Dispatch将MVC设计模式中的M,V,C联系到一起。

Command extension

Dispatch是将Event绑定在方法上,而Command extension是将Event绑定到具体的Command上,Command的使用应该是MVCS设计模式中的Controller(C),基本类之间的关系如下:
在这里插入图片描述

CommandBinder可以将具体的Event或者Signal来绑定到具体的Command上,其负责利用Event或者Signal来找到,或者创建一个Command。

Mediation extension

Mediation 扩展是整个StrangeIoc框架中唯一依赖Unity3D的API的扩展,这是因为mediation是用于处理显示(Views,GameObject)和除显示外的应用程序逻辑的。在这个框架中,其把显示部分分成了View和Mediator,具体的类层次关系如下:
在这里插入图片描述

Context extension

Context extension 是整个strangeIoc 的MVCS框架应用的基础,其组合了前面所有的extension,具体的关系如下图 :
在这里插入图片描述

关于StrangeIOC框架的具体用法,在下一节我们会具体介绍。

参考文章链接:https://blog.csdn.net/leoleocs/article/details/48023823