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层包含的应该是整个应用程序的逻辑业务。
转载于:https://www.cnblogs.com/fuland/p/3632847.html
pureMVC简单示例及其原理讲解四(Controller层)相关推荐
- controller层要写什么_别再写满屏的try-catch了,真丑,全局异常处理不会吗?
本文讲得比较细,所以篇幅较长.请认真读完,希望读完后能对统一异常处理有一个清晰的认识. 背景 软件开发过程中,不可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异常情况,所 ...
- vrf路由泄露原理和简单示例
通过简单示例讲解一下vrf泄露的方法 前提 1.在思科设备里面称为vrf. 2.在华为设备里面称为vpn-instance. 一.原理 需求:vpn-a访问vpn-b vpn-instance有2个v ...
- ppst——技术视频spring AOP 的原理讲解和简单实现
ppst 技术视频--spring AOP 的原理讲解和简单实现:请访问ppst 技术视频分享平台 , www.ppst.cc,上面有最新的技术视频,推荐大家把博客录制成视频吧,可以获取收益哦 1.s ...
- mysql表变量临时表_sql server 临时表详细讲解及简单示例
一.概述 在sql server里临时表存储在TempDB库中,TempDB是一个系统数据库,它只有Simple恢复模式,也是最小日志记录操作.主要用于存放局部临时表,全局临时表,表变量,都是基于临时 ...
- 超详细的Vue渲染原理讲解
目录 一.Vue简介 1. MVVM.MVP和MVC 2. Vue的基本配置 二.Vue渲染原理 1. HTML与模板 2. Vue组件的完整渲染过程 (1). Vue自身的初始化阶段 (2). 组件 ...
- php 伪静态 page-18.html,PHP 伪静态实现技术原理讲解
PHP 伪静态实现技术原理讲解 发布于 2015-01-18 23:52:58 | 129 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Pre ...
- 解密汽车全景行车安全系统的前世和今生——第二讲:原理讲解
解密汽车全景行车安全系统的前世和今生--第二讲:原理讲解 来源:深圳市汽车电子行业协会 作者:姜卫忠 发布时间:2013-3-7 浏览(4648)次 解密汽车全景行车安全系统的前世和今生 第二讲:全 ...
- 【C++ 语言】智能指针 引入 ( 内存泄漏 | 智能指针简介 | 简单示例 )
文章目录 I . 智能指针 引入 II . 智能指针 简介 III . 智能指针 简单示例 I . 智能指针 引入 1 . 示例前提 : 定义一个 Student 类 , 之后将该类对象作为智能指针指 ...
- Thrift的安装和简单示例
本文只是简单的讲解Thrift开源框架的安装和简单使用示例,对于详细的讲解,后面在进行阐述. Thrift简述 Thrift是一款由Fackbook开发的可伸缩.跨语言的服务开发框架,该框架已经开源并 ...
最新文章
- 常用MySQL的命令集锦
- mysql字段定义成text类型的严重影响查询性能
- C# WinForm TreeView用法总结
- Python的模块化编程
- java 同域名下怎么访问同事的项目_喜大普奔,两个开源的前后端分离项目可以在线体验了...
- StakeDAO新增Sushiswap流动性奖励计划
- 动辄几个亿的东半球最强饭局:大佬们都吃了啥?
- 【算法学习】Fast burst images denoising
- c 生成html的div,createElement动态创建HTML对象脚本代码
- Newifi路由刷机R6830
- 打造前端 Deepin Linux 工作环境——安装 nodejs 环境,git 版本管理
- buildroot学习(七)——at91sam9g45软件平台更新
- 识别 Cisco交换机型号
- JDK中java.exe,javadoc.exe,jdb.exe,javaprof.exe分别是什么,有什么作用?
- 如何确定自己不是高智商?蒙提霍尔三扇门问题
- QTableWidget表格控件的用法
- git fatal: schannel: next InitializeSecurityContext failed: SEC E CERT EXPIRED (0x80090328)
- c++小游戏合集(AI)
- 柯朗微积分与数学分析习题选解(1.1 节 a)
- ZZULIOJ:1053: 正弦函数
热门文章
- 分组密码简介和五大分组模式
- 安川西格玛7驱动器手册_什么是伺服驱动器?选型的原则有哪些?
- java测试类和类_【测试开发】从测试角度看Java异常类(错误和异常区别介绍)
- 较简单的字节输入流输出流拷贝文件
- java 垃圾回收机制_Java的垃圾回收机制
- linux忘记mysql登录用户密码_linux中忘记mysql用户root密码解决方案
- mysql极客_极客mysql16
- 面向对象思想精华总结
- 《Python Cookbook 3rd》笔记(4.11):同时迭代多个序列
- linux读写文件 简单版