`
flysnail
  • 浏览: 92824 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

分析PureMVC中的观察者模式运用

    博客分类:
  • Flex
 
阅读更多
刚一个开始看PureMVC,一个字乱,摸不着头脑,不过这个要慢慢的啃,消化,看PureMVC文档要结合它的类图看.
在这里给大家分享一下PureMVC中的观察者模式运用.
观察模式中有主题 ,观察者,通知.在PureMVC中 View充当主题的角色, Observer 当然充当观察者了,Notification 就充当命令通知了.
现在大家都知道PureMVC中观察者模式的角色分别是谁了,这样在去看就非常清晰了,但它的来胧去脉是怎么回事那?
在View中定义了一些方法,主要的方法:
+registerObserver(in notificationName : String, in observer : IObserver) : void
+notifyObservers(in notification : INotification) : void
+registerMediator(in mediator : IMediator) : void
+retrieveMediator(in mediatorName : String) : IMediator
+removeMediator(in mediatorName : String) : void
+hasMediator(in mediatorName : String) : Boolean

这个方法中有两个注册方法,registerObserver这个方法是注册Command的执行方法.在Control中有个registerCommand方法对其进行调用:
public function executeCommand( note : INotification ) : void
{
  var commandClassRef : Class = commandMap[ note.getName() ];
  if ( commandClassRef == null ) return;
     var commandInstance : ICommand = new commandClassRef();
	commandInstance.execute( note );
  }

public function registerCommand( notificationName : String, commandClassRef : Class ) : void
{
  if ( commandMap[ notificationName ] == null ) 
  {
    view.registerObserver( notificationName, new Observer( executeCommand, this ) );
	}
    commandMap[ notificationName ] = commandClassRef;
   }

registerMediator这个方法是注册视图,以便视图接收通知.
在Mediator中,既可以发送通知,也可以接收通知.
Observer在构造方法,构造两个参数
	public function Observer( notifyMethod:Function, notifyContext:Object ) 
	{
	  setNotifyMethod( notifyMethod );
	  setNotifyContext( notifyContext );
	}

notifyMethod 这个参数是其实是executeCommand方法。
Observer接收到通知后,执行方法:
public function notifyObserver( notification:INotification ):void
{
 this.getNotifyMethod().apply(this.getNotifyContext(),[notification]);
}




分享到:
评论
2 楼 flysnail 2008-08-11  
里面的类都是一些单例,所以里面只会存在一个注册的对象.
1 楼 duooluu 2008-08-07  
注册后就存在一个Map中
是不是必须手工清理掉注册的对象?

相关推荐

    PureMVC中文教程

    4. **PureMVC模式**:介绍PureMVC的命令模式、观察者模式等设计模式的应用,以及它们如何协同工作以实现松耦合。 5. **实际应用**:提供示例代码和案例,展示如何在实际项目中运用PureMVC,例如创建一个新的模块、...

    基于PureMVC框架实现的Qt的一个例子

    PureMVC框架引入了命令模式、观察者模式和代理模式等设计模式,使得MVC模式在实际应用中更加灵活和强大: 1. **命令模式**:将操作封装为命令对象,便于管理和复用。当收到事件通知时,调度中心会根据事件类型执行...

    可以运行的puremvc的登陆实例.

    在PureMVC中,视图通过实现`PureMVC.IView`接口来管理通知观察者(Observer)列表,接收并分发通知。 3. **控制器(Controller)**:控制器处理视图发出的命令,并协调模型和视图之间的交互。在登录实例中,可能会...

    pureMVC架构详细讲解

    4. **通知(Notifications)**:PureMVC中的通信机制是基于观察者模式的Notification。任何对象都可以发布、订阅和广播Notification。这种设计允许组件之间松散耦合,增强了系统的可扩展性和可维护性。 5. **结构...

    PureMVC结构pdf中文版

    7. **通知(Notification)**:PureMVC使用观察者模式来传递消息。Notification对象作为消息载体,包含了消息的类型和数据,可以跨模块传递,使得不同组件之间能进行非侵入式的通信。 文档《puremvc_implementation...

    pureMVC Demo C#

    PureMVC是一种基于观察者模式的框架,它将应用分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种分层设计有助于提高代码的可复用性、可维护性和模块化。 - **模型(Model)**:负责存储...

    [转]pureMVC简单示例及其原理讲解

    通常,PureMVC的示例会涵盖命令模式、观察者模式等设计模式的运用,以及如何实现模块化和解耦。 【标签】"源码"和"工具"提示我们,这篇文章可能不仅提供了理论解释,还可能包含实际的源代码示例,以便读者可以直接...

    [转] PureMVC心得教程:使用puremvc框架实现的贪吃蛇

    PureMVC通过命令、观察者、代理、门面等模式进一步细化了这些职责。 1. **PureMVC的组件** - **Model**: 模型层由Proxy类组成,它们负责存储和管理应用程序的数据。 - **View**: 视图层由Mediator类构成,它们...

    javascript PureMVC库文件

    JavaScript PureMVC库文件是基于JavaScript编程语言实现的PureMVC框架的核心组件集合。...无论你是新手还是经验丰富的开发者,理解并熟练运用PureMVC框架,都将对你的JavaScript项目带来显著的益处。

    puremvc-js-multicore-framework-master

    PureMVC是基于观察者模式的框架,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。这种架构设计有助于提高代码的可维护性和可扩展性,使得开发者可以专注于业务逻辑,而不用...

    flash actionscript3游戏编程之AS3 PureMVC设计模式在AS中的应用例子_详解MVC的作用.zip

    2. **事件驱动**:PureMVC使用观察者模式,使得游戏状态的变化能够通过事件通知到相关的组件,保证了各个部分的同步更新。 3. **命令模式**:PureMVC中的命令模式使得游戏逻辑的处理更为清晰,开发者可以通过定义...

    pureMVC精典实例

    PureMVC for Java同样遵循MVC模式,提供了命令、观察者、代理、实体和宏命令等核心组件,以帮助开发者构建可复用、可扩展的Java应用。通过与Java的集成,我们可以利用Java的强大功能,如多线程、网络通信和数据库...

    PureMVC框架源码

    在PureMVC中,模型由Proxy类来实现,它们存储和处理数据,并提供观察者模式,使得其他组件可以监听数据变化。 2. **View(视图)**: 视图层负责展示数据和处理用户交互。PureMVC中的View由Mediator和Observer模式...

    PureMVC_dep_JS

    2. **观察者模式**:通过通知(Notification)类实现事件驱动,使得组件间可以解耦通信。 3. **多例模式**:提供单例(Singleton)和多例(Multiton)两种模式的Proxy和Mediator,适应不同场景需求。 4. **宏命令**...

    pureMVC Flex

    文档中可能会涵盖如观察者模式、命令模式、代理模式等设计模式的使用,以及在PureMVC中如何实施这些模式来提高代码的可维护性和复用性。同时,这份文档可能还会提供在实际开发中如何避免常见问题、优化性能的建议。 ...

    puremvc 五子棋 代码

    **纯MVC(PureMVC)框架五子棋代码详解** PureMVC是一个轻量级的框架,它遵循模型-视图-控制器(MVC)设计模式,旨在提高软件的可维护性和...通过分析和实践,你可以更好地掌握MVC设计模式以及PureMVC框架的运用技巧。

    pureMVC 教程

    在PureMVC中,视图主要由Notification和Observer实现,Notification是事件通知机制,Observer是观察者模式的实现,用于视图和模型之间的通信。 3. 控制器(Controller):控制器层处理用户输入并协调模型和视图的...

    flex pure mvc框架

    在Flex Pure MVC中,模型组件通过注册为“观察者”来监听其他层的事件,确保数据的一致性。 - 注册模型代理(Proxy)用于处理与服务器的数据交换,可以实现数据的加载、存储和转换。 - 注册实体(Mediator)则用于...

    PureMVC for as3 SWC帮助文件

    - 它通过模块化、命令模式、观察者模式等设计模式,为开发者提供了一套规范的开发框架,使代码结构更加清晰,易于维护。 2. **核心组件**: - **Model(模型)**:负责数据的存储和管理,与业务逻辑层交互,不...

    puremvc-lua-framework:Puremvc 框架,由 Lua 工作

    2. 观察者模式:通过Observer接口,实现Model和View之间的双向通信,确保数据更新时视图能实时响应。 3. 多态性:通过接口和抽象类,PureMVC提供了一套可扩展的架构,开发者可以方便地自定义Model、View和...

Global site tag (gtag.js) - Google Analytics