/*
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 Notification
s to
* trigger ICommand
s or to communicate with other IMediators
. IProxy
and ICommand
* instances communicate with each other and IMediator
s
* by broadcasting INotification
s.
* A key difference between Flash Event
s and PureMVC
* Notification
s is that Event
s follow the
* 'Chain of Responsibility' pattern, 'bubbling' up the display hierarchy
* until some parent component handles the Event
, while
* PureMVC Notification
s 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 Notification
s.
*
* @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;
}
}