`
java_doc
  • 浏览: 19815 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

flex puremvc demo

    博客分类:
  • flex
阅读更多
这个例子还是很久以前学习flex的时候看到的,由于工作比较忙,一直都没有时间来写博客,加上有长一段时间没有用Flex了,都感觉有些陌生了, 所以觉得吧学过的知识写到博客里,以后有时间自己来看看才不会忘记以前学过的东西。也可以便于知识共享。

puremvc是一个flex的MVC框架,以前也研究过Cairngrom,但是感觉Cairngrom的代码太沉长了,最后感觉还是puremvc要好一些。不过一般的小型项目也不需要这些框架了,一是代码会增加,二是学习这个需要一些时间和精力。

     这个例子对于初学puremvc的人我想会很有用。下面就来看看这个简单的Demo吧。
官方网站:http://puremvc.org/
    由于代码太多,我只贴一些重要的代码,完整Demo我会放在附件里。
ApplicationFacade.as
public class ApplicationFacade extends Facade implements IFacade
	{
		// Notification name constants
		public static const STARTUP:String 			= "startup";
		
		public static const NEW_USER:String 		= "newUser";
		public static const DELETE_USER:String 		= "deleteUser";
		public static const CANCEL_SELECTED:String	= "cancelSelected";
		
		public static const USER_SELECTED:String	= "userSelected";
		public static const USER_ADDED:String		= "userAdded";
		public static const USER_UPDATED:String		= "userUpdated";
		public static const USER_DELETED:String		= "userDeleted";

		public static const ADD_ROLE:String 		= "addRole";
		public static const ADD_ROLE_RESULT:String 	= "addRoleResult";
		
		
		/**
		 * Singleton ApplicationFacade Factory Method
		 */
		public static function getInstance() : ApplicationFacade {
			if ( instance == null ) instance = new ApplicationFacade( );
			return instance as ApplicationFacade;
		}
		
		/**
		 * Start the application
		 */
		 public function startup(app:Object):void
		 {
		 	sendNotification( STARTUP, app );	
		 }

		/**
		 * Register Commands with the Controller 
		 */
		override protected function initializeController( ) : void 
		{
			super.initializeController();			
			registerCommand( STARTUP, StartupCommand );
			registerCommand( DELETE_USER, DeleteUserCommand );
			registerCommand( ADD_ROLE_RESULT, AddRoleResultCommand );
		}
		
	}

pureMvc 的 facade 关系到 几个方法

首先 是注册  model  controller view  三个模块 是需要注册到 facade 才可以使用的
registerCommand
registerMediator
registerProxy

一下是控制层的一个类:
public class StartupCommand extends SimpleCommand implements ICommand
	{
		/**
		 * Register the Proxies and Mediators.
		 * 
		 * Get the View Components for the Mediators from the app,
		 * which passed a reference to itself on the notification.
		 */
		override public function execute( note:INotification ) : void	
		{
			//注册代理,以便于Mediator接受
			facade.registerProxy( new UserProxy() );
			facade.registerProxy( new RoleProxy() );
			
			var app:EmployeeAdmin = note.getBody() as EmployeeAdmin;
			facade.registerMediator( new UserFormMediator( app.userForm ) );
			//UserListMediator需要在初始化时显示数据,所以在构造方法初始化数据
			facade.registerMediator( new UserListMediator( app.userList ) );
			facade.registerMediator( new RolePanelMediator( app.rolePanel ) );
		}
	}

Mediator类:
public class UserListMediator extends Mediator implements IMediator
	{
		private var userProxy:UserProxy;

		public static const NAME:String = 'UserListMediator';

		public function UserListMediator( viewComponent:Object )
		{
			super( NAME, viewComponent );
			//添加事件监听器
			userList.addEventListener( UserList.NEW, 	onNew );
			userList.addEventListener( UserList.DELETE, onDelete);
			userList.addEventListener( UserList.SELECT, onSelect );
			//获得代理数据,程序初始化(StartUP)时调用
			userProxy = facade.retrieveProxy( UserProxy.NAME ) as UserProxy;
			userList.users = userProxy.users;
		}
		/**
		 * 获得视图组件
		 */
		private function get userList():UserList
		{
			return viewComponent as UserList;
		}
		
		private function onNew( event:Event ):void
		{
			var user:UserVO = new UserVO();
			sendNotification( ApplicationFacade.NEW_USER, user );
		}
		
		private function onDelete( event:Event ):void
		{
			sendNotification( ApplicationFacade.DELETE_USER,
							  userList.selectedUser );
		}
		
		private function onSelect( event:Event ):void
		{
			sendNotification( ApplicationFacade.USER_SELECTED,
							  userList.selectedUser );
		}
		/**
		 * 列出感兴趣的通知
		 */ 
		override public function listNotificationInterests():Array
		{
			return [
					ApplicationFacade.CANCEL_SELECTED,
					ApplicationFacade.USER_UPDATED
				   ];
		}
		
		override public function handleNotification( note:INotification ):void
		{
			switch ( note.getName() )
			{
				case ApplicationFacade.CANCEL_SELECTED:
					userList.deSelect();
					break;
					
				case ApplicationFacade.USER_UPDATED:
					userList.deSelect();
					break;
					
			}
		}
		
	}

    由于代码较多,我就不一一列举了,感兴趣的自己下载看吧。另外附带一个puremvc的很好资料,谢谢大家。

分享到:
评论
2 楼 Keeper_liu 2012-04-21  
非常感谢楼主,这是我见过的最好的例子,如果在Proxy里面读取数据采用flex的读取数据的方式的话,这个例子就完美了。
1 楼 phenix9527 2012-01-31  
学习中,感谢楼主无私奉献

相关推荐

    pureMVC 实例

    《pureMVC实战:构建基于Flex前端与BlazeDS、Spring和Hibernate后端的应用》 在软件开发领域,尤其在企业级应用中,选择合适的框架和技术栈至关重要。本实例采用了一个强大的组合:PureMVC作为前端框架,BlazeDS...

    基于flex,PureMVC的登陆实现demo

    开发环境flash builder 4,sdk:flex4.1,PureMVC 3.2.04,简单的demo,结构清晰,有必要的注释,工程导入flash builder即可。用户名/密码为:admin/admin视为验证通过。

    pureMvc框架下的flexdemo

    根据压缩包子文件的文件名称列表"puremvc-as3-demo-flex-appskeleton-master",我们可以推断这是一个名为"appskeleton"的Flex应用骨架,它是PureMVC AS3版本的示例,用于展示如何搭建基本的PureMVC Flex应用程序结构...

    使用PureMVC实现ASP.NET的MVC结构开发

    这是一个使用C#开发语言的基于PureMVC框架的Web登录Demo,是网上绝无仅有的实例。 本文以初学者的视角,详细地介绍PureMVC在ASP.NET的应用。 PureMVC不仅仅是Flex的MVC框架哦,而且它非常的小巧,还等什么呢,快来...

    PureMVC Demo

    《PureMVC Demo:深入理解Flex中的框架应用》 PureMVC是一款开源的、轻量级的、模型-视图-控制器(Model-View-Controller)框架,它为开发人员提供了一种组织代码结构的方式,使得应用程序的业务逻辑与用户界面能够...

    pureMVC例子(pureMVC源代码作者cliff hall所写)

    在提供的"pureMVC例子"中,Cliff Hall通过一个名为"Demo_AS3_Flash_HelloFlash"的示例项目,向我们展示了如何在Flash环境中使用PureMVC。 PureMVC的核心组件包括: 1. **Model(模型)**:这部分负责应用程序的...

    puremvc multicore

    描述中的“这是一个demo”表明你拥有一个使用PureMVC多核架构的示例项目。通常,这样的示例会展示如何在实际项目中应用框架,包括如何创建和管理模型、视图和控制器组件,以及如何使用通知(Notifications)进行模块...

    puremvc-as3-demo-flex-manifoldroamer:PureMVC AS3 Flex演示

    演示:流形漫游器(Flex) 此演示说明了PureMVC框架的用法,该示例使用Flex应用程序中的组件,该组件漫游在用户导航时根据需要提取的XML文件中定义的节点网络。截屏地位生产平台/技术执照PureMVC AS3 / Flex演示– ...

    puremvc-as3-demo-flex-weborb-login:PureMVC AS3 Flex WebORB演示

    该演示演示了WebORB服务与基于PureMVC的Flex客户端的协作,以执行登录操作。 截屏 地位 生产- 平台/技术 执照 PureMVC AS3演示-Flex / WebORB登录-版权所有:copyright:2008 Jens Krause PureMVC-版权所有:...

    puremvc-as3-demo-flex-appskeleton:PureMVC AS3 Flex演示

    演示:应用程序骨架(Flex) 该演示演示了基于PureMVC的Flex应用程序的启动过程,该过程显示带有进度条的初始屏幕,直到加载了多个资源为止,之后向用户展示了实际的UI。 包括标准版和MultiCore版。地位生产-平台/...

    puremvc-as3-demo-flash-sequential:PureMVC AS3 Flex演示

    演示:顺序(纯AS3) 此演示演示了如何使用AsyncCommand实用程序执行一系列命令,其中一些命令... 未经明确的事先书面许可,不得使用Futurescale,Inc.,PureMVC.org的名称或其贡献者的名称来认可或促销从该软件衍生

    purmvc资料

    **PureMVC**是一款基于MVC设计模式的开源框架,主要用于构建结构化的Flex和ActionScript应用程序。它通过对模型(Model)、视图(View)、控制器(Controller)进行高度抽象和封装,实现了各个组件之间的解耦,从而...

    Building a Flex Application with the Parsley Framework

    Parsley的一个Demo 比pureMVC更适合用在Flex 也可以在java blazeDS 中运行 http://coenraets.org/blog/2009/07/building-a-flex-application-with-the-parsley-framework/

    hello flex4

    此外,书中还会介绍Flex4的高级特性,如 Cairngorm、PureMVC等轻量级框架,这些框架能帮助开发者实现模块化、可维护的代码结构。同时,可能会涉及到Flex与后台服务器(如PHP、Java)的数据交换,以及使用AMF(Action...

Global site tag (gtag.js) - Google Analytics