在这一节中我们来看一下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(); |