/*
 * JBoss, the OpenSource J2EE webOS
 * 
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 */
package org.jboss.aop.patterns.observable;

/**
 * A Subject. This interface is exposed on the advised object.
 * 
 * @author <a href="adrian@jboss.com">Adrian Brock</a>
 * @version $Revision: 1.1 $
 */
public interface Subject
{
   /**
    * Add an observer
    * 
    * @param observer the observer
    */
   void addObserver(Observer observer);
   
   /**
    * Remove an observer
    * 
    * @param observer the observer
    */
   void removeObserver(Observer observer);
   
   /**
    * Notify all observers
    */
   void notifyObservers();
}