Unity StrangeIOC傻瓜式使用教程(dispatch用法)

公司用的框架是StrangeIOC,开始完全不知道怎么用,打断点也跟踪不到代码,后来网上各种寻找详解,但是说的都过于高大上(全是专业名词,依赖注入等),完全不适合我这种新人小白理解。
最后在自己的各种实践下,总算摸透了其中dispatch用法。这篇文章不会给你讲解各种大概念,只讲strangIOC该怎么用。
首先,我们要知道有strangeIOC有几大模块。
在这里插入图片描述

  1. Root:通常命名为XXXContextView,例如demo1ContextView,它的作用最简单,内含一个context属性,写在Awake里将它初始化即可。随便挂在一个物体上,作为程序的开始。
  2. MVCSContext:这个功能模块也很简单,主要负责各个事件的绑定。
  3. View层:包含UI界面显示的View与Mediator,View负责界面本身的事情,不关系数据从哪来以及如何得到,mediator就是View的跑腿,为View和Command之间提供桥梁。
  4. Command层:负责控制,负责mediator传过来的请求,然后像service层和model层获取数据再穿回去。命名规范一般是在这里插入图片描述
    CommandEvent是枚举,XXXCommand是具体要执行的事件。内部会声明Service和Model在这里插入图片描述后续会通过步骤介绍更详细。
    5、Service层:负责与WEB等外部条件交互,获取数据等,一般写成接口,然后创造类继承。(这部分后续可能会有补充理解,暂时我理解的也不是很透彻)结构与Command类似,枚举里的每一项分别对应一个事件
    在这里插入图片描述
    6、Model层:没啥好说的,一般是用来存储数据,也有大佬说是模型层,但是对于我目前来说只是存储数据的类型。
    7、最重要的一个机制,dispatch,View,mediator,Command,Service都会有,其中mediator与Command自身的dispatch是全局的。view层调用自己的dispatch告诉mediator需要的数据,mediator在调用自己的全局dispatch去调用Command绑定的事件,Command调用service,获取到数据,再调用自身全局的dispatch调用mediator中的方法。
    至此,我们已经了解了所有的模块,接下来我们演示如何使用。
    我之前写过一篇文章,如何实现unity分页,这次我们将对这个分页用StrangeIOC框架对其进行包装Unity如何实现分页
    详细步骤:
    View层:
    首先,View层只负责展示内容给用户看,不关心如何获取数据,所以我们要做的第一件事就是如何给View层数据。在View层声明一个在这里插入图片描述
    然后dispatch发出信息,告诉mediator层我需要数据。
    在这里插入图片描述
    Mediator层:
    在Mediator类中声明一个View在这里插入图片描述
    并在OnRegister方法中
    在这里插入图片描述
    在这里插入图片描述
    3:Command层:
    Mediator层中用到了一个Demo1MediatorEvent.RequestItems,那么这个是什么呢,Command中每一个枚举对应一个事件,当dispatch发出信号指明调用的时候则执行该方法。
    在这里插入图片描述

在这里插入图片描述
这是RequestCommand,即之前mediator层想要调用的方法,发现此处调用了服务层,并且给服务层的dispatch绑定了一个该类中的方法(这个方法是拿到数据回传给mediator然后告知view拿到数据可以进行相关的操作)
在这里插入图片描述
service层拿到数据告诉Command层,Command层再传给Mediator层
在这里插入图片描述
最后View此时已经拿到了数据,可以开始执行加载的方法
在这里插入图片描述
在这里插入图片描述
总结:使用的方法非常绕,view通过dispatch告诉mediator,然后mediator声明一个方法,将view的dispatch发出的消息与这个方法绑定,然后这个方法里用mediator自己的方法调用Command的方法,Command在调用自身内部的Service去获取Model数据,然后Service去和外部交互数据,如果需要回传,那么还需要在Command对Service绑定一个方法。总之初步使用很绕。
流程图:View与mediator的关系,Model,Service 和Command的关系类似。只有多用才能更好地理解。Mediator和Command之间使用全局的dispatch互相调用对方。
后续会学习Signal类的用法,到时候再继续分享。
在这里插入图片描述
在这里插入图片描述
案例Demo
PS:这里是刚入职的U3D萌新一只,日常分享工作中遇到的问题以及解决方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值