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项目框架基于Pure...
在本篇文章中,我们将深入探讨"puremvc-js-multicore-framework-master"这一项目,它代表了PureMVC在JavaScript中的多核实现。 1. **PureMVC简介** PureMVC是基于观察者模式的框架,它将应用程序分为三个主要部分...
标题中的“初探PureMVC:使用PHP+MySQL+Flex结合PureMVC框架做了个Flex留言本”揭示了本文将探讨如何使用PureMVC框架,结合PHP后端和MySQL数据库,构建一个基于Flex的前端留言本应用。PureMVC是一个轻量级、可扩展的...
PureMVC是一个轻量级的框架,用于构建模块化、可维护的JavaScript、ActionScript、Flex、Swift和Java应用程序。它的设计模式基于经典的MVC(Model-View-Controller)架构,但进行了强化和优化,使其更适合现代Web...
纯MVC(PureMVC)是一种设计模式,它在软件工程领域中被广泛用于构建多层架构的应用程序,特别是在富互联网应用程序(RIA)如Flex项目中。该模式将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器...
**标题解析:** "FLEX资源--------Pure...综上所述,"FLEX资源--------PureMVC开发包下载"提供的内容是一个用于Flex开发的开源MVC框架,其源码可以用于学习和定制,配合相关教程和工具,有助于提升开发效率和代码质量。
这个框架是基于Model-View-Controller(MVC)设计模式的,它提供了一种结构化的解决方案,使得开发者可以更有效地组织和管理应用程序的组件。 在PureMVC中,MVC的三个主要组成部分被抽象为类: 1. **Model**(模型...
### 中文Flex与pureMVC文档知识点解析 #### 一、PureMVC框架概述 - **框架背景**:PureMVC是由Futurescale公司创建并维护的一个开源且免费的程序框架,适用于创建高性能的富互联网应用程序(RIA)。该框架不仅支持...
PureMVC AS3 Standard Framework 是一个轻量级的、开源的、跨平台的模型-视图-控制器(MVC)框架,专为ActionScript 3(AS3)编程语言设计。该框架的主要目的是帮助开发人员按照MVC模式组织代码,提高开发效率,降低...
纯MVC(PureMVC)是一个轻量级的框架,用于构建基于模型-视图-控制器(Model-View-Controller)设计模式的应用程序。在AS3.0版本中,PureMVC提供了强大的组织和管理代码的方式,使得开发者可以更有效地进行多层应用...
它遵循经典MVC(Model-View-Controller)设计模式,并且特别适用于Adobe Flex应用。该框架基于单例模式,提供了清晰的分层结构,以分离应用中的业务逻辑、视图组件和用户交互处理。 在PureMVC框架中,核心层由Model...
**Flex PureMVC框架详解** PureMVC是一个轻量级的、跨平台的框架,主要应用于构建高性能的Rich Internet Applications(RIA)。它采用MVC(Model-View-Controller)设计模式,旨在降低不同组件间的耦合性,提高代码...
PureMVC 是一个轻量级的、跨平台的、开源的 Model-View-Controller (MVC) 框架,它为软件开发提供了结构化的解决方案,使得开发者可以更有效地组织代码,提高代码的可维护性和可扩展性。 描述中的 "puremvc-swift-...
在Flex 4.6开发环境中使用PureMVC,可以帮助开发者遵循经典的Model-View-Controller(模型-视图-控制器)架构,提高代码的可维护性和可扩展性。 **PureMVC简介** PureMVC是用AS3编写的轻量级框架,它将业务逻辑、...
1. **PureMVC简介**:PureMVC是由MainFrame Software公司开发的一个开源框架,基于Model-View-Controller(MVC)模式。它提供了一个模块化的、可扩展的框架,用于创建富客户端应用程序,包括Flex和Flash等。PureMVC...
PureMVC是一个轻量级的、跨平台的、基于观察者模式的多层应用程序架构框架。这个框架的主要目的是为了简化开发过程,提供一种模块化、结构化的开发方式,以提高代码的可重用性和可维护性。在本教程中,我们将深入...
PureMVC是一个轻量级的、可移植的、模型-视图-控制器(Model-View-Controller)框架,主要用于构建富互联网应用程序(Rich Internet Applications,RIA)。它在ActionScript 3(AS3)环境中得到了广泛的应用,同时也...