org.puremvc.java.patterns.observer.Notification Maven / Gradle / Ivy
Show all versions of PureMVC Show documentation
//
// PureMVC Java Standard
//
// Copyright(c) 2019 Saad Shams
// Your reuse is governed by the Creative Commons Attribution 3.0 License
//
package org.puremvc.java.patterns.observer;
import org.puremvc.java.interfaces.INotification;
/**
* 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 Observer Observer
*
*/
public class Notification implements INotification {
// the name of the notification instance
private String name;
// the type of the notification instance
private String type;
// the body of the notification instance
private Object body;
/**
* Constructor.
*
* @param name name of the Notification
instance. (required)
* @param body the Notification
body.
* @param type the type of the Notification
*/
public Notification(String name, Object body, String type) {
this.name = name;
this.body = body;
this.type = type;
}
/**
* Constructor.
*
* @param name name of the Notification
instance.
* @param body the Notification
body.
*/
public Notification(String name, Object body) {
this(name, body, null);
}
/**
* Constructor.
*
* @param name name of the Notification
instance.
*/
public Notification(String name) {
this(name, null, null);
}
/**
* Get the name of the Notification
instance.
*
* @return the name of the Notification
instance.
*/
public String getName() {
return name;
}
/**
* Set the body of the Notification
instance.
*/
public void setBody(Object body) {
this.body = body;
}
/**
* Get the body of the Notification
instance.
*
* @return the body object.
*/
public Object getBody() {
return body;
}
/**
* Set the type of the Notification
instance.
*/
public void setType(String type) {
this.type = type;
}
/**
* Get the type of the Notification
instance.
*
* @return the type
*/
public String getType() {
return type;
}
/**
* Get the string representation of the Notification
instance.
*
* @return the string representation of the Notification
instance.
*/
public String toString() {
String msg = "Notification Name: " + getName();
msg += "\nBody:" + ((body == null) ? "null" : body.toString());
msg += "\nType:" + ((type == null) ? "null" : type);
return msg;
}
}