1) 创建ActionFacade的实例_facade,ActionFacade是Faç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çade的sendNotification方法
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 );
}
也就是说要调用View的notifyObservers方法
4) View的notifyObservers方法如下,遍历所有关注这个通知(名称)的Observer,依次执行这些Observer的notifyObserver方法。
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) 下面来看Observer的notifyObserver方法
public function notifyObserver( notification:INotification ):void
{
this.getNotifyMethod().apply(this.getNotifyContext(),[notification]);
}
这个方法很简单,获取这个Observer封装的响应通知的方法(如exectue()),并把对应的上下文(如Controller),和通知作为参数来执行,呵呵!很像java中的反射机制。
6) 如在观察者模式的应用中讲到的,执行了Controller的executeCommand方法,从而遍历Command数组,找到响应这个通知的Command(如LoginCommand),并执行这个Command的exectue方法。
相关推荐
3. **观察者模式**:通过事件驱动实现Model、View和Controller之间的通信,确保各层之间松耦合。 4. **Proxy模式**:简化了数据模型的管理,提供了统一的接口来访问和操作数据。 5. **MacroCommand、SimpleCommand和...
在PureMVC中,视图通过实现`PureMVC.IView`接口来管理通知观察者(Observer)列表,接收并分发通知。 3. **控制器(Controller)**:控制器处理视图发出的命令,并协调模型和视图之间的交互。在登录实例中,可能会...
PureMVC框架引入了命令模式、观察者模式和代理模式等设计模式,使得MVC模式在实际应用中更加灵活和强大: 1. **命令模式**:将操作封装为命令对象,便于管理和复用。当收到事件通知时,调度中心会根据事件类型执行...
4. **通知机制**:通过Notifier类,PureMVC实现了观察者模式,使得任何对象都可以订阅和发布通知,增强了组件间的通信。 5. **多线程支持**:PureMVC也提供了一种多线程模型,使得开发者可以在不同线程中运行不同的...
PureMVC将MVC模式进一步抽象为四个核心组件:模型(Model)、视图(View)、控制器(Controller)和多态观察者(Proxy、Command、MacroCommand、Mediator、Notifier)。 - **多态观察者(Multiton)**:每个MVC组件...
4. **PureMVC模式**:介绍PureMVC的命令模式、观察者模式等设计模式的应用,以及它们如何协同工作以实现松耦合。 5. **实际应用**:提供示例代码和案例,展示如何在实际项目中运用PureMVC,例如创建一个新的模块、...
在PureMVC中,视图是一个观察者模式的实现,它可以监听并响应模型或控制器的更改。 3. **控制器(Controller)**:控制器组件处理用户的输入和事件,协调模型和视图的交互。在PureMVC中,控制器通过Mediator类来...
通过分析源码,我们可以看到PureMVC是如何优雅地实现MVC模式,以及如何通过命令模式和观察者模式来增强其灵活性和可扩展性。理解这些核心概念和机制,对于在实际项目中使用PureMVC框架进行开发至关重要。
它通过观察者模式与视图和控制器进行通信,当模型数据发生变化时,会通知视图进行更新。模型不直接操作视图,而是通过发布通知(Notification)来实现解耦。 三、视图(View) 视图负责展示数据和接收用户输入。在...
PureMVC是一种基于观察者模式的框架,它将应用分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种分层设计有助于提高代码的可复用性、可维护性和模块化。 - **模型(Model)**:负责存储...
4. **多态观察者(Multiton)**:PureMVC引入了多态观察者模式,`Facade`是这一模式的实现,它为整个应用提供单一的入口点,管理所有其他组件,并确保它们之间正确通信。 在“HelloPureMVC”这个例子中,你会看到...
通常,PureMVC的示例会涵盖命令模式、观察者模式等设计模式的运用,以及如何实现模块化和解耦。 【标签】"源码"和"工具"提示我们,这篇文章可能不仅提供了理论解释,还可能包含实际的源代码示例,以便读者可以直接...
4. **通知(Notifications)**:PureMVC中的通信机制是基于观察者模式的Notification。任何对象都可以发布、订阅和广播Notification。这种设计允许组件之间松散耦合,增强了系统的可扩展性和可维护性。 5. **结构...
6. **Notification**: 事件通知机制,PureMVC使用观察者模式实现,允许任何对象订阅和发布通知。 7. **Facade**: 是整个应用程序的入口点,它管理所有其他MVC组件,并提供了一个全局访问点。Facade通常负责初始化...
7. **通知(Notification)**:PureMVC使用观察者模式来传递消息。Notification对象作为消息载体,包含了消息的类型和数据,可以跨模块传递,使得不同组件之间能进行非侵入式的通信。 文档《puremvc_implementation...
在PureMVC中,模型通过观察者模式(Observer Pattern)与其它组件通信。 2. **View(视图)**:视图组件负责显示用户界面和响应用户的交互。它不直接操作数据,而是通过通知(Notifications)与控制器交互。 3. **...
PureMVC是一个轻量级的、跨平台的、基于观察者模式的多层应用程序架构框架。这个框架的主要目的是为了简化开发过程,提供一种模块化、结构化的开发方式,以提高代码的可重用性和可维护性。在本教程中,我们将深入...
4. **多态观察者(Multiton Observers)**:PureMVC引入了多态观察者模式,每个`Model`、`View`和`Controller`都是单例的,但它们各自维护着自己的观察者列表,这使得通信更加高效且灵活。 5. **简单示例...
它不直接与模型或控制器交互,而是通过观察者模式接收通知,动态地更新视图以反映模型的变化。 2. **模型(Model)**:模型层是应用程序数据的存储中心,它包含了业务逻辑和数据管理。模型组件通常由Proxy类来实现...
标题中的“PureMVC的例子”指的是一个使用PureMVC框架的示例项目,这是一款轻量级的、基于观察者模式的多层架构设计模式框架,适用于ActionScript 3.0、Flex、Java、Swift等多种编程语言。PureMVC旨在简化开发流程,...