• pureMVC简单示例及其原理讲解二(Model层)


    本节将讲述Model层。

    Model层有VO和Mediator组成,非常简单,仅仅包含两个类:UserVO和UserProxy。

    UserVO中的构造器用于初始化用户的添加(通过email和密码),另一个isValid属性验证用户电子邮件是否合法以及密码长度。

    Uservo.as代码  收藏代码
    1. /**  
    2. UserVO  
    3.  
    4. */  
    5. package com.superwulei.model.vo {  
    6.   
    7.     public class UserVO {  
    8.   
    9.         public var email:String = '';            //电子邮件  
    10.         public var password:String = '';         //密码  
    11.         public var regDate:Date;                 //注册日期  
    12.   
    13.         public function UserVO(email:String, password:String) {  
    14.             this.email = email;  
    15.             this.password = password;  
    16.             this.regDate = new Date();  
    17.         }  
    18.   
    19.         /*  
    20.         验证用户信息  
    21.         email:以单词字符开始,以.cn结尾  
    22.         password:     长度大于等于6位  
    23.         */  
    24.         public function get isValid():Boolean {  
    25.             var emailRegExp:RegExp = /^w+[@]w+(.com)$/;  
    26.             return (emailRegExp.test(this.email) && this.password.length >= 6);  
    27.         }  
    28.     }  
    29. }  

    UserProxy代码如下。UserProxy继承Proxy。在Proxy中有一个类型为Object的data私有变量,这样就可以使用这个Object的变量存储任何数据。在UserProxy构造方法中,我们通过super方法调用父类构造器并将Object的data转换为ArraryCollect类型。由于data是私有了,因此我们通过getter返回属性的公有方法返回"ArrayCollection"类型的data。同时定义两个其他的方法用于向这个users属性中添加、删除对象。其实大家现在应该可以看出来了,这个users属性存在的目的其实就是为了存储UserVO对象。

    Userproxy.as代码  收藏代码
    1. package com.superwulei.model  
    2. {  
    3.     import com.superwulei.model.vo.UserVO;  
    4.       
    5.     import mx.collections.ArrayCollection;  
    6.       
    7.     import org.puremvc.as3.patterns.proxy.Proxy;  
    8.   
    9.     public class UserProxy extends Proxy  
    10.     {  
    11.         public static const NAME:String = 'UserProxy';  
    12.           
    13.         public function UserProxy()  
    14.         {  
    15.             super(NAME,new ArrayCollection());  
    16.         }  
    17.           
    18.         public function get users():ArrayCollection{  
    19.             return data as ArrayCollection;  
    20.         }  
    21.         /* 添加项 */  
    22.         public function addItem(item:Object):void{  
    23.             users.addItem(item);  
    24.         }  
    25.         /* 删除项 */  
    26.         public function deleteItem(item:Object):void{  
    27.             var user:UserVO = item as UserVO;  
    28.             for(var i:int = 0; i < users.length; i++){  
    29.                 if(users[i].email == user.email){  
    30.                     users.removeItemAt(i);  
    31.                 }  
    32.             }  
    33.         }  
    34.     }  
    35. }  

    Model层非常简单,pureMVC设计的追求同样如此,Model层应该是稳定的、不会由于其他层的变化而变化。

    本节中讲解了Model层,关键的一点是Proxy中的data,非常重要,很有意义。

  • 相关阅读:
    linux下创建virtualenv时指定python版本
    Centos7系统如何不重启系统识别新添加的硬盘?
    centos7系统下hostname解析
    Linux之shell脚本for、while、case语句的高级用法
    Linux自制编译内核
    Centos7系统详细的启动流程
    cpio的用法
    Linux之删除带有空格的文件(而不是目录)
    Linux之特殊的环境变量IFS以及如何删除带有空格的目录
    zabbix使用自定义脚本监控内存
  • 原文地址:https://www.cnblogs.com/fuland/p/3632843.html
Copyright © 2020-2023  润新知