观QFramework框架底层逻辑有感
拿QFramework(以下简称QF)第一个案例简单理解框架底层代码逻辑。
使用QF框架重构后的代码,给我这种小白一种很抽象的感觉,但好的代码就是抽象的,这是不可否认的。于是想掌握一下这个框架的基础部分,至少能让自己在UI使用方面可以随心所欲。
首先,是整个CounterApp架构的初始化:
先是这行代码,通过CounterAppController层获取CounterAppModel层,在我看来,整个CounterApp架构的构建由此开始,为了方便管理,架构整体使用依赖注入的方式将各个子模块注入整个CounterApp的Architecture中。
通过上面的扩展方法一步步直接访问到Interface属性,通过get访问器,走进InitArchitecture()方法。
初步认识InitArchitecture方法(将各个子模块注册进大模块架构中,此案例指的是CounterApp架构):
此处T类型就是CounterApp 。
随后进入CounterApp的Init()方法,注册各个子模块:
下面在Architecture抽象类中的RegisterModel方法中,将CounterAppModel的架构归属设置为CounterApp架构=>model.SetArchitecture(this);
将CounterAppModel注入到架构CounterApp的IOCContainer容器中。
接下来,
什么时候调用下面的条件语句呢?
//TODO
逻辑梳理到这里,又有新的疑问诞生了:为什么Model和System需要SetArchitecture(this),而Utility却不需要呢?
//TODO
这个OnRegisterPatch?.Invoke(mArchitecture);是什么作用?
//TODO
接下来初始化所有已经注入到CounterApp架构中的Model、System,并打上“已经初始化”标识。
上面这个方法的作用理解,但是具体代码编写不是很明白。
未理解的点=>关键字typeof的应用、IsInstanceOfType方法的作用、Cast<T>()方法作用。
//TODO
回到主题,最后标识整个CounterApp架构初始化完成。最后返回初始化的CounterApp架构:
接下来就是QF的命令模式与事件系统了。
//TODO 未完待续...