/* PureMVC - Copyright(c) 2006-08 Futurescale, Inc., Some rights reserved. Your reuse is governed by the Creative Commons Attribution 3.0 United States License */ package org.puremvc.as3.patterns.observer { import org.puremvc.as3.interfaces.*; /** * A base INotification implementation. * *

* PureMVC does not rely upon underlying event models such * as the one provided with Flash, and ActionScript 3 does * not have an inherent event model.

* *

* The Observer Pattern as implemented within PureMVC exists * to support event-driven communication between the * application and the actors of the MVC triad.

* *

* Notifications are not meant to be a replacement for Events * in Flex/Flash/Apollo. Generally, IMediator implementors * place event listeners on their view components, which they * then handle in the usual way. This may lead to the broadcast of Notifications to * trigger ICommands or to communicate with other IMediators. IProxy and ICommand * instances communicate with each other and IMediators * by broadcasting INotifications.

* *

* A key difference between Flash Events and PureMVC * Notifications is that Events follow the * 'Chain of Responsibility' pattern, 'bubbling' up the display hierarchy * until some parent component handles the Event, while * PureMVC Notifications follow a 'Publish/Subscribe' * pattern. PureMVC classes need not be related to each other in a * parent/child relationship in order to communicate with one another * using Notifications. * * @see org.puremvc.as3.patterns.observer.Observer Observer * */ public class Notification implements INotification { /** * Constructor. * * @param name name of the Notification instance. (required) * @param body the Notification body. (optional) * @param type the type of the Notification (optional) */ public function Notification( name:String, body:Object=null, type:String=null ) { this.name = name; this.body = body; this.type = type; } /** * Get the name of the Notification instance. * * @return the name of the Notification instance. */ public function getName():String { return name; } /** * Set the body of the Notification instance. */ public function setBody( body:Object ):void { this.body = body; } /** * Get the body of the Notification instance. * * @return the body object. */ public function getBody():Object { return body; } /** * Set the type of the Notification instance. */ public function setType( type:String ):void { this.type = type; } /** * Get the type of the Notification instance. * * @return the type */ public function getType():String { return type; } /** * Get the string representation of the Notification instance. * * @return the string representation of the Notification instance. */ public function toString():String { var msg:String = "Notification Name: "+getName(); msg += "\nBody:"+(( body == null )?"null":body.toString()); msg += "\nType:"+(( type == null )?"null":type); return msg; } // the name of the notification instance private var name : String; // the type of the notification instance private var type : String; // the body of the notification instance private var body : Object; } }