浏览 2270 次
锁定老帖子 主题:Flex中MVC
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-11-04  

Flex的出现不只是解决了浏览器的不足,而且更加多元化,对用户更加友好 更加丰富,吸引程序员的眼球。可惜的是表显层如果处理不好业务逻辑非常杂乱。简直就是污染。所以我们是不是重构一下呢!好。。我们看看MVC。把这个架构模式放到表显层是一贯作风。我们来看看M 层

	[Bindable]
	public class ModelLocal extends EventDispatcher
	{
	
	public var name:String;
	public var age:int;
	
	private static var instance:ModelLocal;
	
	public var teacher:Teacher;//存放数据
	public static function getInst():ModelLocal{//单例 统一存取
	
	
	if(instance==null){
	
	instance=new ModelLocal();
	}
	return instance;
	}
		public function ModelLocal(target:IEventDispatcher=null)
		{
			super(target);
		}
		
	}
}

 

我们再来看看C层

	
	public class proControl
	{
		
		public var theModel:ModelLocal=ModelLocal.getInst();
		public static var helloEvent:String="helloevent";
		public function proContra()
		{
		}
		
		
		public function getTeacher():void{
			var teacher:Teacher=new Teacher();
			teacher.name="nic";
			
		theModel.teacher=teacher;//存放数据
		
		
		}
		
		public function getData():void
		{
		
		theModel.name="hello i love you";;//存放数据
		theModel.dispatchEvent(new Event(proContra.helloEvent));//分发事件
		
		}
		

	}

 

上面是把数据推和拉的过程。这方面可以看看观察模式

 

好。最后可以看看V层

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="getTeacher();">
	<mx:Script>
		<![CDATA[
			import com.source.bean.*;
			import mx.controls.Alert;
			var conn:proContra=new proContra();
			var model:ModelLocal=ModelLocal.getInst();
			private function getTeacher():void{
			
			conn.getTeacher();
			model.addEventListener(proContra.helloEvent,hellohadler);
			
			}
			private function hellohadler(evt:Event):void
			{
			
			Alert.show(model.name);
			}
			
			
			private function goTo():void
		{
		conn.getData();
		
		}
			
		]]>
	</mx:Script>
	<mx:TextInput x="190" y="104" text="{model.teacher.name}"/>
	<mx:Button x="190" y="203" label="Button" click="goTo();"/>
</mx:Application>

 

看看表示层是否干净了很多呢!

   发表时间:2009-01-07  
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics