Version 3
    /*
     * 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();
    }