`

Flex 框架PureMVC 源码解析之--Controller篇

    博客分类:
  • Flex
阅读更多

1、Controller实现了IController接口,提供其中方法的实现。

 


package org.puremvc.as3.core
{
	import org.puremvc.as3.core.*;
	import org.puremvc.as3.interfaces.*;
	import org.puremvc.as3.patterns.observer.*;
	
	public class Controller implements IController
	{
		
		/**
		 * 作用:构造方法,Controller是一个单例对象,所以不建议直接调用构造方法
		 *             建议调用它的静态方法getInstance(),为什么不直接定义private级别呢,不解?
		 * 	这里我们看到了上一节讲的存储消息名称-消息处理类对象的commandMap数组			
		 * @throws Error 如果该单例对象已经被创建则在调用构造函数时会出错
		 * 
		 */
		public function Controller( )
		{
			if (instance != null) throw Error(SINGLETON_MSG);
			instance = this;
			commandMap = new Array();			
			initializeController();	
		}
		
		/**
		 * 作用:初始化控制器,说白了是控制器拿到一个view对象,为什么要拿到view对象呢,下面有讲到
		 * @return void
		 */
		protected function initializeController(  ) : void 
		{
			view = View.getInstance();
		}
	
		/**
		 * 作用:代替构造函数的工厂方法
		 * 
		 * @return 返回单例的Controller对象
		 */
		public static function getInstance() : IController
		{
			if ( instance == null ) instance = new Controller( );
			return instance;
		}

		/**
		 * 作用:上节稍微提到了,通过给定的消息来执行对应的处理类
		 * 
		 * @param 消息对象
		 */
		public function executeCommand( note : INotification ) : void
		{
			var commandClassRef : Class = commandMap[ note.getName() ];
			if ( commandClassRef == null ) return;

			var commandInstance : ICommand = new commandClassRef();
			commandInstance.execute( note );
		}

		/**
		 * 作用:在Controller绑定消息名称和消息处理类,Controller里面保存这些key-value对,并且通过view对象注册”观察者“。
		 *            由于pureMVC采用观察者模式,在view对象里面存着这一个数组map,
		 * 			    这里面的key依旧是notificationName,value却是观察者对象;
		 *简单提一下观察在模式:类似于一个购物网站的邮件通知,例如我们在拍拍看到一些书,
		 * 			   我们用邮箱注册并且收藏了这些书,当这些书的价格变动时我们就都会收到通知。
		 *            这里的拍拍就相当于这个view,消息就是价格变动,我们就是观察者。
		 * 			  我们邮箱注册时这个view就用一个map存这个消息(key)和我们的邮箱(value),
		 *           当价格变动时,这个view就遍历map查找所有注册过的邮箱给我们发消息。
		 * @param notificationName 消息名称
		 * @param commandClassRef 消息处理类
		 */
		public function registerCommand( notificationName : String, commandClassRef : Class ) : void
		{
			if ( commandMap[ notificationName ] == null ) {
				view.registerObserver( notificationName, new Observer( executeCommand, this ) );
			}
			commandMap[ notificationName ] = commandClassRef;
		}
		
		/**
		 * 作用:检查是否存在这个消息名称对应的处理类
		 * 
		 * @param notificationName 消息名称
		 * @return 布尔值,是否存在这个处理类
		 */
		public function hasCommand( notificationName:String ) : Boolean
		{
			return commandMap[ notificationName ] != null;
		}

		/**
		 * 作用:移除绑定,并且移除”观察者“,以后拍拍价格变动也不通知你了:)
		 * 
		 * @param notificationName 消息名称
		 */
		public function removeCommand( notificationName : String ) : void
		{
			if ( hasCommand( notificationName ) )
			{
				view.removeObserver( notificationName, this );
							
				commandMap[ notificationName ] = null;
			}
		}
		
		protected var view : IView;
		

		protected var commandMap : Array;


		protected static var instance : IController;


		protected const SINGLETON_MSG : String = "Controller Singleton already constructed!";

	}
}
 

 

分享到:
评论

相关推荐

    基于PureMVC 封装Object-c项目框架

    基于PureMVC 封装Object-c项目框架基于PureMVC 封装Object-c项目框架基于PureMVC 封装Object-c项目框架基于PureMVC 封装Object-c项目框架基于PureMVC 封装Object-c项目框架基于PureMVC 封装Object-c项目框架基于Pure...

    puremvc-js-multicore-framework-master

    在本篇文章中,我们将深入探讨"puremvc-js-multicore-framework-master"这一项目,它代表了PureMVC在JavaScript中的多核实现。 1. **PureMVC简介** PureMVC是基于观察者模式的框架,它将应用程序分为三个主要部分...

    初探PureMVC:使用PHP+MySQL+Flex结合PureMVC框架做了个Flex留言本

    标题中的“初探PureMVC:使用PHP+MySQL+Flex结合PureMVC框架做了个Flex留言本”揭示了本文将探讨如何使用PureMVC框架,结合PHP后端和MySQL数据库,构建一个基于Flex的前端留言本应用。PureMVC是一个轻量级、可扩展的...

    puremvc源码分析

    PureMVC是一个轻量级的框架,用于构建模块化、可维护的JavaScript、ActionScript、Flex、Swift和Java应用程序。它的设计模式基于经典的MVC(Model-View-Controller)架构,但进行了强化和优化,使其更适合现代Web...

    pureMVC源码实例(flex的mvc框架)

    纯MVC(PureMVC)是一种设计模式,它在软件工程领域中被广泛用于构建多层架构的应用程序,特别是在富互联网应用程序(RIA)如Flex项目中。该模式将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器...

    FLEX资源--------PureMVC开发包下载

    **标题解析:** "FLEX资源--------Pure...综上所述,"FLEX资源--------PureMVC开发包下载"提供的内容是一个用于Flex开发的开源MVC框架,其源码可以用于学习和定制,配合相关教程和工具,有助于提升开发效率和代码质量。

    PureMVC总结(附Hello World含PureMVC源码代码和文档)

    这个框架是基于Model-View-Controller(MVC)设计模式的,它提供了一种结构化的解决方案,使得开发者可以更有效地组织和管理应用程序的组件。 在PureMVC中,MVC的三个主要组成部分被抽象为类: 1. **Model**(模型...

    中文Flex与pureMVC文档

    ### 中文Flex与pureMVC文档知识点解析 #### 一、PureMVC框架概述 - **框架背景**:PureMVC是由Futurescale公司创建并维护的一个开源且免费的程序框架,适用于创建高性能的富互联网应用程序(RIA)。该框架不仅支持...

    puremvc-as3-standard-framework-master

    PureMVC AS3 Standard Framework 是一个轻量级的、开源的、跨平台的模型-视图-控制器(MVC)框架,专为ActionScript 3(AS3)编程语言设计。该框架的主要目的是帮助开发人员按照MVC模式组织代码,提高开发效率,降低...

    pureMVC 源码

    纯MVC(PureMVC)是一个轻量级的框架,用于构建基于模型-视图-控制器(Model-View-Controller)设计模式的应用程序。在AS3.0版本中,PureMVC提供了强大的组织和管理代码的方式,使得开发者可以更有效地进行多层应用...

    flex框架pureMVC的使用:第一步

    它遵循经典MVC(Model-View-Controller)设计模式,并且特别适用于Adobe Flex应用。该框架基于单例模式,提供了清晰的分层结构,以分离应用中的业务逻辑、视图组件和用户交互处理。 在PureMVC框架中,核心层由Model...

    Flex PureMVC 框架

    **Flex PureMVC框架详解** PureMVC是一个轻量级的、跨平台的框架,主要应用于构建高性能的Rich Internet Applications(RIA)。它采用MVC(Model-View-Controller)设计模式,旨在降低不同组件间的耦合性,提高代码...

    puremvc-swift-standard-framework-master_demo

    PureMVC 是一个轻量级的、跨平台的、开源的 Model-View-Controller (MVC) 框架,它为软件开发提供了结构化的解决方案,使得开发者可以更有效地组织代码,提高代码的可维护性和可扩展性。 描述中的 "puremvc-swift-...

    Flex puremvc 实例及说明(flex 4.6开发环境)

    在Flex 4.6开发环境中使用PureMVC,可以帮助开发者遵循经典的Model-View-Controller(模型-视图-控制器)架构,提高代码的可维护性和可扩展性。 **PureMVC简介** PureMVC是用AS3编写的轻量级框架,它将业务逻辑、...

    Flex pureMVC 资料例子打包

    1. **PureMVC简介**:PureMVC是由MainFrame Software公司开发的一个开源框架,基于Model-View-Controller(MVC)模式。它提供了一个模块化的、可扩展的框架,用于创建富客户端应用程序,包括Flex和Flash等。PureMVC...

    puremvc 框架源码及教程, 附带一个使用示例

    PureMVC是一个轻量级的、跨平台的、基于观察者模式的多层应用程序架构框架。这个框架的主要目的是为了简化开发过程,提供一种模块化、结构化的开发方式,以提高代码的可重用性和可维护性。在本教程中,我们将深入...

    pureMVC框架源码

    PureMVC是一个轻量级的、可移植的、模型-视图-控制器(Model-View-Controller)框架,主要用于构建富互联网应用程序(Rich Internet Applications,RIA)。它在ActionScript 3(AS3)环境中得到了广泛的应用,同时也...

Global site tag (gtag.js) - Google Analytics