pureMVC简单示例及其原理讲解四(Controller层)

摘要:
本节描述pureMVC示例中的控制器层。添加用户命令。作为代码packagecom。超级乌雷。控制器{importcom.superwulei.model.UserProxy;importcom.Superwlei.model.vo.UserVO;imortmx.controls.Alert;importarg.puremvc.as3.interfaces.INotification;importtarg.puremvc.as3.patterns.command.SimpleCommand;publiclassAddUserCommandextendsSimpleCommand{overridepublicfunctionexecute:void{variable:UserVO=notification.getBody()作为用户VO;varuserProxy:UserProxy=外观。retrieveProxyasUserProxy;如果{userProxy.addItem;}否则{Alert.show;}}}}AddUserCommand是单个命令。自定义SimpleCommand必须继承SimpleCommand并重写execute方法。上一篇文章“pureMVC及其原理介绍-视图层的简单示例”中提到的添加用户的逻辑代码应该写在这里。删除用户命令删除用户命令。作为代码packagecom。超级乌雷。控制器{importcom.superwulei.model.UserProxy;importcom.Superwlei.model.vo.UserVO;imortarg.puremvc.as3.interfaces.INotification;importarg.puremvc.as3.patterns.command.SimpleCommand;publiclassDeleteUserCommandextendsSimpleCommand{overridepublicfunctionexecute:void{varuser:UserVO=notification.getBody()作为用户VO;varuserProxy:UserProxy=外观。retrieveProxyasUserProxy;userProxy。删除项;}}ModelPrepCommand和ViewPrepCommand分别是模型层注册和视图层注册。在pureMVC中,总体控制是facade,因此无论是代理、中介还是命令,它们都必须在facade中注册。上面的四个命令都是SimpleCommand,最后一个StartupCommand是MacroCommand。StartupCommand包含多个SimpleCommand。它通过addSubCommand方法添加子命令,然后在facade上注册AddUserCommand和DeleteUserCommand。

本节将讲述pureMVC示例中的Controller层。

Controller层有以下文件组成:

  • AddUserCommand.as
  • DeleteUserCommand.as
  • ModelPrepCommand.as
  • ViewPrepCommand.as
  • StartupCommand.as

AddUserCommand。顾名思义,它是添加用户命令。让我们首先看看代码。

Addusercommand.as代码收藏代码
  1. packagecom.superwulei.controller
  2. {
  3. importcom.superwulei.model.UserProxy;
  4. importcom.superwulei.model.vo.UserVO;
  5. importmx.controls.Alert;
  6. importorg.puremvc.as3.interfaces.INotification;
  7. importorg.puremvc.as3.patterns.command.SimpleCommand;
  8. publicclassAddUserCommandextendsSimpleCommand
  9. {
  10. overridepublicfunctionexecute(notification:INotification):void
  11. {
  12. varuser:UserVO=notification.getBody()asUserVO;
  13. varuserProxy:UserProxy=facade.retrieveProxy(UserProxy.NAME)asUserProxy;
  14. if(user.isValid){
  15. userProxy.addItem(user);
  16. }else{
  17. Alert.show("请检查用户名和密码");
  18. }
  19. }
  20. }
  21. }

AddUserCommand是一个单一命令(SimpleCommand),自定义SimpleCommand必须继承SimpleCommand并重写execute方法。execute方法表示这个命令的执行。曾经在上一篇《pureMVC简单示例及其原理讲解——View层》中提到的添加用户的逻辑代码,应该在这里编写。还记得上一篇中提到的“View层本身不处理各种操作,但是发送通知”么?

上一篇中发送通知的代码
sendNotification(ApplicationFacade.USER_ADD,userForm.user);

拿出这段代码是特意的想说明AddUserCommand的execute方法中的notification.getBody()其实就是userForm.user,严谨的说应该是userFrom.user作为参数传到execute方法中来。如此我们在这里通过userProxy.addItem(user)就实现了用户的添加。userProxy中的users就多了一个user。

DeleteUserCommand,删除用户命令。代码如下,与添加用户道理一样,不多言。

Deleteusercommand deleteusercommand.as代码收藏代码
  1. packagecom.superwulei.controller
  2. {
  3. importcom.superwulei.model.UserProxy;
  4. importcom.superwulei.model.vo.UserVO;
  5. importorg.puremvc.as3.interfaces.INotification;
  6. importorg.puremvc.as3.patterns.command.SimpleCommand;
  7. publicclassDeleteUserCommandextendsSimpleCommand
  8. {
  9. overridepublicfunctionexecute(notification:INotification):void
  10. {
  11. varuser:UserVO=notification.getBody()asUserVO;
  12. varuserProxy:UserProxy=facade.retrieveProxy(UserProxy.NAME)asUserProxy;
  13. userProxy.deleteItem(user);
  14. }
  15. }
  16. }

ModelPrepCommand、ViewPrepCommand分别是Model层注册和View层注册。说道注册就要道一道。在pureMVC中,一切总控制是facade,因此无论是Proxy、Mediator还是Command都要在facade中注册。上面四个Command全部为SimpleCommand,最后一个StartupCommand为MacroCommand(复合命令)。StartupCommand包含了多个SimpleCommand,通过addSubCommand方法添加了子命令,并在之后在facade上注册了AddUserCommand和DeleteUserCommand。

Modelprepcommand.as代码收藏代码
  1. packagecom.superwulei.controller
  2. {
  3. importcom.superwulei.model.UserProxy;
  4. importorg.puremvc.as3.interfaces.INotification;
  5. importorg.puremvc.as3.patterns.command.SimpleCommand;
  6. publicclassModelPrepCommandextendsSimpleCommand
  7. {
  8. overridepublicfunctionexecute(notification:INotification):void
  9. {
  10. /*注册Model*/
  11. facade.registerProxy(newUserProxy());
  12. }
  13. }
  14. }

Viewprepcommand.as代码收藏代码
  1. packagecom.superwulei.controller
  2. {
  3. importcom.superwulei.view.UserFormMediator;
  4. importcom.superwulei.view.UserListMediator;
  5. importorg.puremvc.as3.interfaces.INotification;
  6. importorg.puremvc.as3.patterns.command.SimpleCommand;
  7. publicclassViewPrepCommandextendsSimpleCommand
  8. {
  9. overridepublicfunctionexecute(notification:INotification):void
  10. {
  11. varapp:MyPureMVCdemo=notification.getBody()asMyPureMVCdemo;
  12. /*注册View*/
  13. facade.registerMediator(newUserFormMediator(app.userForm));
  14. facade.registerMediator(newUserListMediator(app.userList));
  15. }
  16. }
  17. }

Startupcommand.as代码收藏代码
  1. packagecom.superwulei.controller
  2. {
  3. importcom.superwulei.ApplicationFacade;
  4. importorg.puremvc.as3.patterns.command.MacroCommand;
  5. publicclassStartupCommandextendsMacroCommand
  6. {
  7. overrideprotectedfunctioninitializeMacroCommand():void{
  8. addSubCommand(ModelPrepCommand);
  9. addSubCommand(ViewPrepCommand);
  10. /*注册添加、删除用户命令*/
  11. facade.registerCommand(ApplicationFacade.USER_ADD,AddUserCommand);
  12. facade.registerCommand(ApplicationFacade.USER_DELETE,DeleteUserCommand);
  13. }
  14. }
  15. }

通过使用facade的registerCommand就好象添加一个监听器一样,当有sendNotification发送出来的时候,就会有对应的Command的execute方法被执行。

Controller层包含的应该是整个应用程序的逻辑业务。

免责声明:文章转载自《pureMVC简单示例及其原理讲解四(Controller层)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vc绘图工具、颜色和绘图函数无法识别的属性“targetFramework”的解决方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

PureMVC源码分析

PureMVC 是在基于模型、视图和控制器 MVC 模式建立的一个轻量级的开源应用框架,具有跨平台语言无关性。最初被应用于adobe flex,actionScript开发中,现已被移植到包括c++,java,c#,php等主要语言平台上,在各平台上的实现方式也几乎一样,降低了用户学习成本。 本文从PureMVC actionScript版源码角度分析P...

PureMVC 官方文档翻译(一)

    最近在学习PureMVC框架,感觉最权威的还是阅读官方文档,顺便翻译了下全当记笔记了。 PureMVC概览     这篇文档他讨论PureMVC框架的类和接口,使用UML来阐述它们的角色、职责和协作。     PureMVC框架有一个非常细小的目标一一就是帮助你把应用程序编码之间的关联分离成明确的三层:模型层,视图层和控制层。     经典MVC设计...