    /*
     * 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: 22230 $
     */
    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();
    }