它与 pureMVC 一样,都是使用 MVC 思想搭建结构的一套框架,他们的最终目的都是使程序松耦合。而它又与 pureMVC 不同
首先他没有像pureMVC那样四处开花,使用event来传递信息的RobotLegs决定了它只能存在在AS平台上;
其次它使用了一个叫做依赖注入的东西,听起来好像比较深奥,事实上就是多使用了一个[Inject]元标签,我们在程序中总是通过这个标签定义的变量来获取某个View component、某个Model等等的引用。而在pureMVC中,我们如果要获得某个引用,一般是使用façade的retrieveMediator(mediatorName)、retrieveProxy(proxyName)这样的方法。
最后,使用注入机制的RobotLegs不需要你重新去改写你的类,不像pureMVC那样要求你所有的类继承它提供给你的类。
这些只是我本人看了一两天所感受到的,如果有理解不周全的地方还请指正。。。
下面是我尝试使用 RobotLegs 做的一个简单的留言本 demo 。我会在后面介绍整个 demo 的运作流程(黄字部分
首先简单介绍一下RobotLegs的组成成员,见下图
Context:这是RobotLegs的总线,差不多相当于pureMVC的façade的概念吧,整个框架的初始化就是从它开始。
View :这部分是你原先就写好的类,他们可能有着自己的事件侦听和简单逻辑——比如 demo 中的隐藏 / 显示历史记录按钮。你需要在 context 的 startup 函数中把你的 view 与 Mediator 相关联,让它作为视图组件的经纪人,管理与其他 actor 的交流。因此Mediator既可以发送事件到RobotLegs的事件总线(比如:有人按了获取数据按钮了,谁负责加载数据的赶紧的),也可以从总线中侦听事件(比如:管数据的说他的数据已经就绪了,那我直接拿来显示了)。
其实在严格的 MVC 模式下,是不能出现第二种情况的,正确的方式是:管数据的说他数据已经就绪了, RobotLegs 将自动执行一条 Command ,由这 条 Command 负责把数据交给 Mediator 。也就是说 View 和 Model 之间的沟通必须经过 Controller 。 但由于 RobotLegs 中,我们无法在 Command 内部轻易获得 view 的引用,所以在 Command 里无法直接对 view 进行操作,折衷的办法可以让 Com mand 再广播一条事件,让 Mediator 侦听来自 command 的事件并对 view 进行操作。Model和Service:它们是处在程序底层的,前者用于长久地保存数据,后者用于与外界沟通解析数据提供给Model。当然你可以使用传统MVC模式,假如舍弃Service,并且没有remoteproxy,你的Model不得不得自己去与外界沟通。Model和