pureMVC简单示例及其原理讲解四(Controller层)
本节将讲述pureMVC示例中的Controller层。
Controller层有以下文件组成:
- AddUserCommand.as
- DeleteUserCommand.as
- ModelPrepCommand.as
- ViewPrepCommand.as
- StartupCommand.as
AddUserCommand 。顾名思义,它是添加用户命令。让我们首先看看代码。
- package com.superwulei.controller
- {
- import com.superwulei.model.UserProxy;
- import com.superwulei.model.vo.UserVO;
- import mx.controls.Alert;
- import org.puremvc.as3.interfaces.INotification;
- import org.puremvc.as3.patterns.command.SimpleCommand;
- public class AddUserCommand extends SimpleCommand
- {
- override public function execute(notification:INotification):void
- {
- var user:UserVO = notification.getBody() as UserVO;
- var userProxy:UserProxy = facade.retrieveProxy(UserProxy.NAME) as UserProxy;
- if(user.isValid){
- userProxy.addItem(user);
- }else{
- Alert.show("请检查用户名和密码");
- }
- }
- }
- }
AddUserCommand是一个单一命令(SimpleCommand),自定义SimpleCommand必须继承SimpleCommand并重写execute方法。execute方法表示这个命令的执行。曾经在上一篇《pureMVC简单示例及其原理讲解——View层 》中提到的添加用户的逻辑代码,应该在这里编写。还记得上一篇中提到的“View层本身不处理各种操作,但是发送通知”么?
拿出这段代码是特意的想说明AddUserCommand的execute方法中的notification.getBody()其实就是userForm.user,严谨的说应该是userFrom.user作为参数传到execute方法中来。如此我们在这里通过userProxy.addItem(user)就实现了用户的添加。userProxy中的users就多了一个user。
DeleteUserCommand ,删除用户命令。代码如下,与添加用户道理一样,不多言。
- package com.superwulei.controller
- {
- import com.superwulei.model.UserProxy;
- import com.superwulei.model.vo.UserVO;
- import org.puremvc.as3.interfaces.INotification;
- import org.puremvc.as3.patterns.command.SimpleCommand;
- public class DeleteUserCommand extends SimpleCommand
- {
- override public function execute(notification:INotification):void
- {
- var user:UserVO = notification.getBody() as UserVO;
- var userProxy:UserProxy = facade.retrieveProxy(UserProxy.NAME) as UserProxy;
- userProxy.deleteItem(user);
- }
- }
- }
ModelPrepCommand、ViewPrepCommand分别是Model层注册和View层注册。说道注册就要道一道。在pureMVC中,一切总控制是facade,因此无论是Proxy、Mediator还是Command都要在facade中注册。上面四个Command全部为SimpleCommand,最后一个StartupCommand为MacroCommand(复合命令)。StartupCommand包含了多个SimpleCommand,通过addSubCommand方法添加了子命令,并在之后在facade上注册了AddUserCommand和DeleteUserCommand。
- package com.superwulei.controller
- {
- import com.superwulei.model.UserProxy;
- import org.puremvc.as3.interfaces.INotification;
- import org.puremvc.as3.patterns.command.SimpleCommand;
- public class ModelPrepCommand extends SimpleCommand
- {
- override public function execute(notification:INotification):void
- {
- /* 注册Model */
- facade.registerProxy(new UserProxy());
- }
- }
- }
- package com.superwulei.controller
- {
- import com.superwulei.view.UserFormMediator;
- import com.superwulei.view.UserListMediator;
- import org.puremvc.as3.interfaces.INotification;
- import org.puremvc.as3.patterns.command.SimpleCommand;
- public class ViewPrepCommand extends SimpleCommand
- {
- override public function execute(notification:INotification):void
- {
- var app:MyPureMVCdemo = notification.getBody() as MyPureMVCdemo;
- /* 注册View */
- facade.registerMediator(new UserFormMediator(app.userForm));
- facade.registerMediator(new UserListMediator(app.userList));
- }
- }
- }
- package com.superwulei.controller
- {
- import com.superwulei.ApplicationFacade;
- import org.puremvc.as3.patterns.command.MacroCommand;
- public class StartupCommand extends MacroCommand
- {
- override protected function initializeMacroCommand():void{
- addSubCommand(ModelPrepCommand);
- addSubCommand(ViewPrepCommand);
- /* 注册添加、删除用户命令 */
- facade.registerCommand(ApplicationFacade.USER_ADD,AddUserCommand);
- facade.registerCommand(ApplicationFacade.USER_DELETE,DeleteUserCommand);
- }
- }
- }
通过使用facade的registerCommand就好象添加一个监听器一样,当有sendNotification发送出来的时候,就会有对应的Command的execute方法被执行。
Controller层包含的应该是整个应用程序的逻辑业务。
pureMVC简单示例及其原理讲解四(Controller层)的更多相关文章
- pureMVC简单示例及其原理讲解三(View层)
本篇说的是View层,即视图层,在本示例中包括两个部分:MXML文件,即可视控件:Mediator. 可视控件 可视控件由UserForm.mxml(图1)和UserList.mxml(图2)两个文件 ...
- pureMVC简单示例及其原理讲解二(Model层)
本节将讲述Model层. Model层有VO和Mediator组成,非常简单,仅仅包含两个类:UserVO和UserProxy. UserVO中的构造器用于初始化用户的添加(通过email和密码),另 ...
- pureMVC简单示例及其原理讲解五(Facade)
本节将讲述Facade,Proxy.Mediator.Command的统一管家.自定义Facade必须继承Facade,在本示例中自定义Facade名称为ApplicationFacade,这个名称也 ...
- pureMVC简单示例及其原理讲解一(开篇)
pureMVC是一个MVC框架,皆在最大限度的减少MVC间的耦合性.本人刚刚接触pureMVC时感到一头雾水,不知从何入手,也不知道从何学习.好在本人有耐性且能看懂英文技术文档,面向对象的编程能力也比 ...
- Optaplanner规划引擎的工作原理及简单示例(2)
开篇 在前面一篇关于规划引擎Optapalnner的文章里(Optaplanner规划引擎的工作原理及简单示例(1)),老农介绍了应用Optaplanner过程中需要掌握的一些基本概念,这些概念有且于 ...
- 马士兵hadoop第四课:Yarn和Map/Reduce配置启动和原理讲解
马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...
- 马士兵hadoop第四课:Yarn和Map/Reduce配置启动和原理讲解(转)
马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...
- Websocket - Websocket原理(握手、解密、加密)、基于Python实现简单示例
一.Websocket原理(握手.解密.加密) WebSocket协议是基于TCP的一种新的协议.WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符.它实 ...
- CNN(卷积神经网络)原理讲解及简单代码
一.原理讲解 1. 卷积神经网络的应用 分类(分类预测) 检索(检索出该物体的类别) 检测(检测出图像中的物体,并标注) 分割(将图像分割出来) 人脸识别 图像生成(生成不同状态的图像) 自动驾驶 等 ...
随机推荐
- Hadoop的初步理解
一.整体思维导图 二.HDFS(Hadoop分布式文件系统) 说明 NameNode:保存整个文件系统的目录信息.文件信息及分块信息,这是由唯一一台主机专门保存,当然这台主机如果出错,NameNode ...
- 引入bootstrap
下载bootstrap的min.css文件,下载地址为:http://www.bootcss.com/ 你也可以去bootstrap中文站上去下载和学习: http://v3.bootcss.com/ ...
- 阿里笔试js题
有一个数组,其中保存的都是小写英文字符串,现在要把它按照除了第一个字母外的字符的字典顺序(字典顺序就是按首字母从a-z顺序排列,如果首字母相同则按第二个字母……)排序,请编写代码: 例:[" ...
- WebDriver(Selenium2) 处理可能存在的JS弹出框
http://uniquepig.iteye.com/blog/1703103 在自动化测试过程中,有些情况下我们会遇到一些潜在的Javascript弹出框.(即某些条件下才会出现,不是固定出现),然 ...
- Android音频系统之AudioFlinger(二)
1.1.1 音频设备的管理 虽然AudioFlinger实体已经成功创建并初始化,但到目前为止它还是一块静态的内存空间,没有涉及到具体的工作. 从职能分布上来讲,AudioPolicyService是 ...
- DataTable的名称要后设置
string sqldatabase = string.Format(dr["sql"].ToString(), drpat["PATIENT_ID"].ToS ...
- Nexus搭建私服 学习
为什么要搭建nexus私服 因为有些公司不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以,有必要再局域网里找一台有外网权限的机器.搭建nexus私服,然后开发人员连接到这台私服 ...
- SpringMVC 接收表单数据的方式 - Samuel - 博客频道 - CSDN.NET
1.@RequestParam @RequestMapping(value = "/xxxx.do") public void create(@RequestParam(value ...
- JavaScript(二)---- 变量、数据类型和运算符
变量 javaScript中的变量变量是弱类型的,用var来声明. javascript的变量声明格式: var 变量名 = 数据; 声明变量要注意的事项: 1. 在javascript中声明变量是 ...
- (简单) POJ 3126 Prime Path,BFS。
Description The ministers of the cabinet were quite upset by the message from the Chief of Security ...