`
houwei
  • 浏览: 61812 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Flex 开发架构(四): 去除FrontController 的Cairngorm

    博客分类:
  • Flex
阅读更多

正如在使用Cairngorm时,视图中的每一个动作都播送一个事件,每个播送出去的事件都需要建立相应的命令代码来处理事件。并且需要在FrontController中对应他们的关系。例如下面的简单流程:

Loginvew.xml —> action login() —>dispatch LoginEvent —>Handled by LoginCommand —>mapping LoginEvent and LoginCommand in FrontController.

在不考虑商务层代码的情况下,当用户建立然后新的动作时,就需要建立2个新的代码,修改Controller代码。

那么如何简化Cairngorm,我的方法是去掉FrontController,取而代之的是Service Façade,其框架图如下所示:

 

 

在上图中,视图不再播送如何事件,而是直接调用Service Façade。而Service Façade则直接调用商务委托层与服务器端通讯(如Remote Object等),然后商务委托处理结果并更新Model Locator,最后Model Locator通过绑定(Binding)更新视窗中的结果。

 

看一下被改变的代码:

ServiceFacade.as:

 

package com.ny.flex.cairngorm.no_fc.service
{
	import com.ny.flex.cairngorm.no_fc.vo.User;
	
	public class ServiceFacade
	{
		private static var _serviceFacade:ServiceFacade = null;
		
		public function ServiceFacade(privateClass:PrivateClass)
		{
			if(ServiceFacade._serviceFacade == null){
				ServiceFacade._serviceFacade = this;
			}
		}
		public static function getInstance():ServiceFacade {
			if(_serviceFacade == null){
				_serviceFacade = new ServiceFacade(new PrivateClass);
			}
			return _serviceFacade;
		}
		
		public function authenticate(user:User):void{
			LoginDelegate.getInstance().authenticate(user);
		}
		public function  getBuddyList():void{
			BuddyListDelegate.getInstance().getBuddyList();
		}
	}
}

class  PrivateClass{}

  

ServiceFacade提供了对所有商务逻辑为一体的界面,视窗的行为(Action)仅仅调用façade,例如下面代码中的Login的动作。

Loginvew.xml

 

	private function login():void{
			if(Validator.validateAll(validators).length == 0){
				var loginUser:User = new User();
				loginUser.userName=username.text;
				loginUser.password=password.text;
				serviceFacade.authenticate(loginUser);
			}   
		}

 

函数 serviceFacade.authenticate(loginUser)如下:

 

		public function authenticate(user:User):void{
			LoginDelegate.getInstance().authenticate(user);
		}

  

ServiceFacade使用LoginDelegate 来真正实现Business Logic:

 

 

 LoginDelegate.as:

 

package com.ny.flex.cairngorm.no_fc.service
{
	import com.ny.flex.cairngorm.no_fc.*;
	import com.ny.flex.cairngorm.no_fc.vo.User;
	
	import mx.rpc.IResponder;
	import mx.rpc.Responder;
	import mx.rpc.events.ResultEvent;
	
	public class LoginDelegate extends BaseDelegate 
	{
		private static  var _loginDelegate:LoginDelegate = null;
		
		public function LoginDelegate(privateClass:PrivateClass){
			if(LoginDelegate._loginDelegate == null ){
				LoginDelegate._loginDelegate = this;
			}
		
		}
		
		public  static function  getInstance():LoginDelegate{
			if(_loginDelegate == null){
				_loginDelegate = new LoginDelegate(new PrivateClass);
			}
			return  _loginDelegate;
		}
		
		public function  authenticate(user:User):void{
			var responder:IResponder = new Responder(onResult_Authenticate,fault);
			var call:Object = service.authenticate(user);
			call.addResponder(responder);
		}
		
		private function onResult_Authenticate(event:ResultEvent):void{
			var authUser:User = event.result as User;
			model.loginUser = authUser;
			model.viewStackSelectedIndex = 1;
		}
	
	}
}

class PrivateClass{}

  

 

上面的authenticate(user) 实现于后台通讯并处理结果,更新Model Locator

 

其他的视图和相应的处理方法 与上面类似。

 

 

这个解决方案简化了Cairngorm的框架,使得代码更易于理解。而且,彻底摆脱了 无味的dispatcher,frontcontroller 和command。 编码效率会提高 并且易于调试。

 

但其弱点是显而易见的:它违犯了解耦的(就是使得设计程序耦合性尽可能的降低)设计规范,使得界面上的行为(Action)和Serivce Façade产生了耦合关系。

 

在最后一篇中我将讨论下一个Flex 开发的热点:Mate-标签化的框架。

 

 

 

 

6
1
分享到:
评论

相关推荐

    flex开发系列书籍:Cairngorm_MVC_框架

    Cairngorm 框架是 Adobe Flex 开发中的一个著名模型-视图-控制器(MVC)架构,它提供了一种结构化的方法来组织和管理应用程序代码,从而提高开发效率和代码可维护性。该框架的核心思想是将应用程序的不同部分——...

    Flex开发框架cairngorm入门实例教程

    Cairngorm是一个轻量级的MVC框架,专门用于Adobe Flex应用程序的开发。这个框架的设计目的是为了提高Flex项目的可维护性和可扩展性,通过分离业务逻辑、视图和控制层,使得代码更加模块化。在Cairngorm中,模型...

    Flex轻量级开发框架-Cairngorm介绍

    Cairngorm是Adobe官方推荐的一个轻量级Flex开发框架,主要基于MVC(Model-View-Controller)设计模式,旨在简化Flex应用程序的开发过程。相比于其他框架如PureMVC,Cairngorm更加简单易用,特别适合于小型到中型的...

    Flex MVC框架 Cairngorm 学习笔记

    Cairngorm是一个轻量级的MVC(Model-View-Controller)框架,专为Adobe Flex应用程序设计。这个框架提供了一种结构化的方法来组织和管理Flex应用的复杂性,帮助开发者实现更好的代码复用、模块化和可维护性。在深入...

    Flex 开发架构

    ### Flex开发架构详解 #### 一、Flex与Java结合的重要性 Flex作为一种强大的Rich Internet Application (RIA) 开发工具,能够创建高性能的用户界面,并且具备跨平台的能力。与此同时,Java作为企业级应用开发的...

    flex mvc 架构图

    Flex MVC架构图是一种用于构建富互联网应用程序(RIA)的架构模型,主要应用于Adobe Flex开发中。Flex是一个开源框架,允许开发者使用MXML和ActionScript创建交互式的、基于Flash的用户界面。MVC(Model-View-...

    Flex开发框架cairngorm入门实例教程.rar

    Flex开发框架Cairngorm是Adobe Flex应用中的一个轻量级设计模式集合,它为创建可维护、可扩展的富互联网应用程序(RIA)提供了一种结构化的方法。Cairngorm由ThoughtWorks公司的Peter Farley在2005年创建,自那时起...

    Flex体系架构剖析

    4. ** Cairngorm、BlazeDS 和 LiveCycle Data Services**:Flex 3支持多种架构模式和数据服务。Cairngorm是Adobe推荐的轻量级MVC框架,用于组织应用程序逻辑。BlazeDS提供AMF(Action Message Format)数据传输,...

    Flex框架Cairngorm经典案例源码

    通过深入学习和分析这个案例源码,你可以更深刻地理解Cairngorm框架的架构和工作原理,了解如何在实际项目中有效地组织和管理代码,提高Flex应用的开发效率。这将有助于你成为一名精通Flex框架和Cairngorm的开发者,...

    flex+cairngorm+java 实例

    Flex是一种开源的、基于ActionScript的开发工具,用于创建交互式、富媒体的用户界面,而Cairngorm则是一个轻量级的MVC(Model-View-Controller)设计模式框架,适用于Flex应用,它提高了代码的可维护性和可测试性。...

    flex-Cairngorm框架

    Flex Cairngorm框架是Adobe Flex应用程序开发中的一个流行的设计模式,它基于Model-View-Controller(MVC)架构,旨在提高代码的可维护性和可扩展性。Cairngorm框架由SitePen公司开发,最初是为了满足大型企业级Flex...

    introducing_cairngorm.rar_flex_site:www.pudn.com

    而Cairngorm框架,则是专门为Flex应用程序设计的一种轻量级、可扩展的MVC(模型-视图-控制器)架构模式,它极大地提升了Flex应用的组织结构和可维护性。 Cairngorm框架由Adobe的ColdFusion团队开发,其设计理念源于...

    Flex 框架搭建步骤Cairngorm

    Cairngorm是一个基于Flex的MVC(Model-View-Controller)框架,它为构建可扩展、可维护的Flex应用程序提供了结构化的支持。MVC模式是软件设计中的一个经典架构,它将应用程序分为三个主要部分:模型(Model)、视图...

    flex Cairngorm 开发文档中文版.pdf

    Flex Cairngorm框架是Adobe Flex开发中的一个著名轻量级MVC框架,它为构建大型、可维护的Flex应用程序提供了结构和指导。这份"flex Cairngorm 开发文档中文版.pdf"是开发者们理解并掌握Cairngorm框架的重要参考资料...

    Flex Cairngorm内部培训教程

    Cairngorm最初由Iteration:Two开发,随着Adobe Flex 2和ActionScript 3的发布,它成为了Adobe官方推荐的开发框架之一。Cairngorm的核心理念是提高Flex应用的可维护性、可扩展性和组织结构,它通过提供一套开发体系,...

    Cairngorm-Flex.zip_Cairngorm_flex

    Cairngorm框架是Adobe Flex开发中的一种著名轻量级MVC(Model-View-Controller)框架,由Adobe公司的专业团队设计,旨在提高Flex应用程序的可维护性和可扩展性。这个框架的核心理念是通过分离业务逻辑、用户界面和...

    flex Cairngorm框架实例

    Flex Cairngorm框架是一个强大的轻量级MVC(模型-视图-控制器)架构,用于构建富互联网应用程序(RIA)。这个框架是Adobe Flex开发者社区中的一个流行选择,它旨在提高代码组织、可维护性和可扩展性。让我们深入探讨...

    Cairngorm开发文档中文版

    总的来说,Cairngorm框架通过清晰的MVC结构和强大的事件驱动机制,为Flex和Adobe AIR应用的开发提供了强大支持。通过阅读"Cairngorm 开发文档中文版.pdf",你可以深入了解每个组件的使用方法以及如何在实际项目中...

Global site tag (gtag.js) - Google Analytics