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,非常重要,很有意义。

posted @ 2014-03-29 18:19  腐烂的翅膀  阅读(781)  评论(0编辑  收藏  举报