/* * ****************************************************************************** * * Copyright 2015 See AUTHORS file. * * * * Licensed under the Apache License, Version 2.0 (the "License"); * * you may not use this file except in compliance with the License. * * You may obtain a copy of the License at * * * * http://www.apache.org/licenses/LICENSE-2.0 * * * * Unless required by applicable law or agreed to in writing, software * * distributed under the License is distributed on an "AS IS" BASIS, * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * * See the License for the specific language governing permissions and * * limitations under the License. * ***************************************************************************** */ package com.puremvc.patterns.observer; /** * The interface definition for a PureMVC Notifier. * <p> * <p> * <code>MacroCommand, Command, Mediator</code> and <code>Proxy</code> all * have a need to send <code>Notifications</code>. * </P> * <p> * <p> * The <code>INotifier</code> interface provides a common method called * <code>sendNotification</code> that relieves implementation code of the * necessity to actually construct <code>Notifications</code>. * </P> * <p> * <p> * The <code>Notifier</code> class, which all of the above mentioned classes * extend, also provides an initialized reference to the <code>Facade</code> * Singleton, which is required for the convienience method for sending * <code>Notifications</code>, but also eases implementation as these classes * have frequent <code>Facade</code> interactions and usually require access * to the facade anyway. * </P> * * @see com.puremvc.patterns.facade.Facade Facade * @see com.puremvc.patterns.observer.Notification Notification */ public interface Notifier { /** * Send a <code>INotification</code>. * <p> * <p> * Convenience method to prevent having to construct new notification * instances in our implementation code. * </P> * * @param notificationName the name of the notification to send * @param body the body of the notification (optional) * @param type the type of the notification (optional) */ void sendNotification(String notificationName, Object body, String type); /** * Send a <code>INotification</code>. * <p> * <p> * Convenience method to prevent having to construct new notification * instances in our implementation code. * </P> * * @param notificationName the name of the notification to send * @param body the body of the notification (optional) */ void sendNotification(String notificationName, Object body); /** * Send a <code>INotification</code>. * <p> * <p> * Convenience method to prevent having to construct new notification * instances in our implementation code. * </P> * * @param notificationName the name of the notification to send */ void sendNotification(String notificationName); }