学学习网 手机版

学学习网

学习路径: 学习首页 > 应用开发 > AS3 >

第十节 MVC模式

设置字体:
----------------------------------
  在这一节中我们来看一下MVC模式,用MVC模式去构建我们的程序会使程序结构更清晰。   MVC模式是‖Model-View-Controller‖的缩写,中文翻译为‖模式-视图-控制器‖。MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。   MVC模式能使界面(Viwe)和数据(Model)能有效的分开,由控制器(Controller)去控制。   我们现在以一个比较简单的电子时钟的例子来看看如何使用MVC模式来架构我们的程序.   首先我们来看一下Model,Model按照我的理解是数据,就是所有的共用数据都是存储在Model里面的,时钟里有这样的数据,小时,分钟,秒;现在我们来建立一个Model,ModelLocator.as:
package net.smilecn.clock.model{          
import flash.events.EventDispatcher;     
import flash.events.Event; 
public class ModelLocator extends EventDispatcher{              
private var _hour:String;                  
private var _minutes:String;                  
private var _second:String;                  
public function ModelLocator():void{          }                 
 public function get hour():String{             
return _hour;          }                  
public function set hour(value:String):void{_hour = value;             
dispatchEvent(new Event("changeHour"));   }                  
public function get minutes():String{ return _minutes;  }                  
public function set minutes(value:String):void{ _minutes = value;             
dispatchEvent(new Event("changeMinutes")); }                  
public function get second():String{ return _second; }                  
public function set second(value:String):void{_second = value;             
dispatchEvent(new Event("changeSecond"));   }   }  }
  这个代码应该会好懂,这里ModelLocator继承了EventDispatcher这个类,继承这个类的原因是ModelLocator需要用dispatchEvent发消息出去。再来看一下Controller.as这个类:
package net.smilecn.clock.control{           
import flash.utils.Timer;    
 import flash.events.TimerEvent;          
import net.smilecn.clock.model.ModelLocator;          
public class Controller{
private var _model:ModelLocator;        
 private var _timer:Timer;                  
 public function Controller(model:ModelLocator):void{_model = model;  }                  
public function startTime():void{_timer = new Timer(1000,0);             
_timer.addEventListener(TimerEvent.TIMER,timerHandler);             
_timer.start();}                  
private function timerHandler(event:TimerEvent):void{  
var nowDate:Date = new Date();
_model.hour=nowDate.getHours()>9?String(nowDate.getHours()):"0"+nowDate.getHours();             
----------------------------------
课程列表
重点难点
赞助链接