上个月在M童的提议下,终于开始使用一个框架了,开始了解一下Robotlegs是什么?
Robotlegs 是一个用来开发Flash,Flex 和 AIR 应用的纯 AS3 微框架。它的核心是一组模块化的工具集以及界面集,用来信息沟通任务,减少重复的代码编写,以及管理应用程序中的依赖注入。除了这些核心工具集以外,Robotlegs还提供了一个比较规范的MVC+S(Model模型,View视图,Controller控件和Service服务)实现,来帮助开展工作。
一个典型的Robotlegs MVC+S应用程序包含以下几个部分:
- Context,实际上是一套自展机制,用来初始化Robotlegs所使用的依赖注入以及各种核心工具,一个应用程序是可以有多个 context 的,这对想要加载外部模块的应用程序很有用,因为在一个 context 里的 actor 只能在他们的 context 定义的范围之内相互通讯,所以在一个模块化的应用程序里,不同context 之间的通讯是完全可能的。
- Controller & Commands,Controller 层由 Command 类体现。Command 是用来执行应用程序单一单位工作的,无状态的,短生命周期的对象。Command 用于应用程序各层之间相互通讯, 也可能用来发送系统事件. 这些系统事件既可能发动其它的 Command, 也可能被一个 Mediator 接收,然后对一个 View Component 进行对应这个事件的工作。Command 是封装应用程序业务逻辑的绝佳场所。Command 应该只在处理框架事件时被执行, 而不应该被任何其他框架 actor 实例化或执行。
- View & Mediators,View 由 Mediator 类体现。继承 Mediator 的类管理应用程序中的 View Component 与应用程序中的其它对象之间的信息交流。一个Mediator 将会监听框架事件和 View Component 事件, 并在处理所负责的 View Component 发出的事件时发送框架事件。这样开发者可以将应用程序特有的逻辑放到 Mediator, 而避免把 View Component 耦合到特定的应用程序。
- Model ,用来在 model 层对数据进行封装并为其提供 API。Model 会在对数据模型进行某些工作之后发出事件通知。Model 通常具有极高的便携性。
- Service,一个 service 层的 Service 用来和“外面的世界”进行通讯。 Web service、文件存取或者其它任何应用程序范围之外的行为对 service 类都很适合。Service 类在处理外部事件时会广播系统事件。一个 service 应该封装和外部服务的交互且具有非常高的便携性。
Robotlegs 使用Flash的原生事件用于框架 actor 之间的通讯。 自定义事件类通常用于此用途,虽然使用现有的 Flash 事件同样可行。Robotlegs 不支持事件冒泡。使用自定义类允许开发者通过给事件添加属性来为框架 actor 之间通讯所用的系统事件提供强类型的负载。
所有的框架 actor 都可以发送事件:Mediator、Service、Model 和 Command。Mediator 是唯一接收框架事件的actor,Command 是在对框架事件的处理中被触发,一个事件既可以被一个 Mediator 接收, 也可以触发一个 command。model 和 service 不应该监听和处理事件,这样做会把它们紧耦合到应用程序特有逻辑而降低潜在的便携性和复用性。