`

PureMVC 观察者模式

 
阅读更多

 

 


 

1  创建ActionFacade的实例_facadeActionFacadeFaçade的实现类,并注册相关的Command,如在观察者模式讲到的,把相关的Command封装到Observer中,并注册到View内,其响应的通知名称为“login

override protected function initializeController( ) : void

        {

            super.initializeController();     

            registerCommand( STARTUP, StratCommand );

            this.registerCommand( LOGIN, LoginCommand );

        }

2  调用_facade.login(user)

public function login( user:UserVo ):void

        {

               sendNotification( LOGIN, user );

        }

3  实际上是调用父类FaçadesendNotification方法

public function sendNotification( notificationName:String, body:Object=null, type:String=null ):void

 {

      notifyObservers( new Notification( notificationName, body, type ) );

 }

Façade方法notifyObservers

public function notifyObservers ( notification:INotification ):void {

             if ( view != null ) view.notifyObservers( notification );

}

也就是说要调用ViewnotifyObservers方法

4  ViewnotifyObservers方法如下,遍历所有关注这个通知(名称)的Observer,依次执行这些ObservernotifyObserver方法。

    public function notifyObservers( notification:INotification ) : void

   {

                     if( observerMap[ notification.getName() ] != null ) {

                            var observers:Array = observerMap[ notification.getName() ] as Array;

                            for (var i:Number = 0; i < observers.length; i++) {

                                   var observer:IObserver = observers[ i ] as IObserver;

                                   observer.notifyObserver( notification );

                            }

                     }

    }

5  下面来看ObservernotifyObserver方法

public function notifyObserver( notification:INotification ):void

              {

                     this.getNotifyMethod().apply(this.getNotifyContext(),[notification]);

              }

这个方法很简单,获取这个Observer封装的响应通知的方法(如exectue()),并把对应的上下文(如Controller),和通知作为参数来执行,呵呵!很像java中的反射机制。

6  如在观察者模式的应用中讲到的,执行了ControllerexecuteCommand方法,从而遍历Command数组,找到响应这个通知的Command(如LoginCommand),并执行这个Commandexectue方法。

 

  • 大小: 16.9 KB
分享到:
评论

相关推荐

    PureMVC 中文版

    3. **观察者模式**:通过事件驱动实现Model、View和Controller之间的通信,确保各层之间松耦合。 4. **Proxy模式**:简化了数据模型的管理,提供了统一的接口来访问和操作数据。 5. **MacroCommand、SimpleCommand和...

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

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

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

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

    pureMVC资料包

    4. **通知机制**:通过Notifier类,PureMVC实现了观察者模式,使得任何对象都可以订阅和发布通知,增强了组件间的通信。 5. **多线程支持**:PureMVC也提供了一种多线程模型,使得开发者可以在不同线程中运行不同的...

    PureMVC框架实例

    PureMVC将MVC模式进一步抽象为四个核心组件:模型(Model)、视图(View)、控制器(Controller)和多态观察者(Proxy、Command、MacroCommand、Mediator、Notifier)。 - **多态观察者(Multiton)**:每个MVC组件...

    PureMVC中文教程

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

    qt版本pureMVC

    在PureMVC中,视图是一个观察者模式的实现,它可以监听并响应模型或控制器的更改。 3. **控制器(Controller)**:控制器组件处理用户的输入和事件,协调模型和视图的交互。在PureMVC中,控制器通过Mediator类来...

    puremvc源码分析

    通过分析源码,我们可以看到PureMVC是如何优雅地实现MVC模式,以及如何通过命令模式和观察者模式来增强其灵活性和可扩展性。理解这些核心概念和机制,对于在实际项目中使用PureMVC框架进行开发至关重要。

    puremvc实例+中文文档

    它通过观察者模式与视图和控制器进行通信,当模型数据发生变化时,会通知视图进行更新。模型不直接操作视图,而是通过发布通知(Notification)来实现解耦。 三、视图(View) 视图负责展示数据和接收用户输入。在...

    pureMVC Demo C#

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

    PureMVC简单例子

    4. **多态观察者(Multiton)**:PureMVC引入了多态观察者模式,`Facade`是这一模式的实现,它为整个应用提供单一的入口点,管理所有其他组件,并确保它们之间正确通信。 在“HelloPureMVC”这个例子中,你会看到...

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

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

    pureMVC架构详细讲解

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

    pureMVC框架源码

    6. **Notification**: 事件通知机制,PureMVC使用观察者模式实现,允许任何对象订阅和发布通知。 7. **Facade**: 是整个应用程序的入口点,它管理所有其他MVC组件,并提供了一个全局访问点。Facade通常负责初始化...

    PureMVC结构pdf中文版

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

    pureMVC初尝试

    在PureMVC中,模型通过观察者模式(Observer Pattern)与其它组件通信。 2. **View(视图)**:视图组件负责显示用户界面和响应用户的交互。它不直接操作数据,而是通过通知(Notifications)与控制器交互。 3. **...

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

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

    pureMVC中英文版API附带一个简单例子

    4. **多态观察者(Multiton Observers)**:PureMVC引入了多态观察者模式,每个`Model`、`View`和`Controller`都是单例的,但它们各自维护着自己的观察者列表,这使得通信更加高效且灵活。 5. **简单示例...

    PureMVC框架电子书

    它不直接与模型或控制器交互,而是通过观察者模式接收通知,动态地更新视图以反映模型的变化。 2. **模型(Model)**:模型层是应用程序数据的存储中心,它包含了业务逻辑和数据管理。模型组件通常由Proxy类来实现...

    PureMVC的例子

    标题中的“PureMVC的例子”指的是一个使用PureMVC框架的示例项目,这是一款轻量级的、基于观察者模式的多层架构设计模式框架,适用于ActionScript 3.0、Flex、Java、Swift等多种编程语言。PureMVC旨在简化开发流程,...

Global site tag (gtag.js) - Google Analytics