/*
Copyright (C) 2007 Richard Gomes
This source code is release under the BSD License.
This file is part of JQuantLib, a free-software/open-source library
for financial quantitative analysts and developers - http://jquantlib.org/
JQuantLib is free software: you can redistribute it and/or modify it
under the terms of the JQuantLib license. You should have received a
copy of the license along with this program; if not, please email
. The license is also available online at
.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the license for more details.
JQuantLib is based on QuantLib. http://quantlib.org/
When applicable, the original copyright notice follows this notice.
*/
package org.jquantlib.util;
import java.util.List;
/**
* This interface is intended to provide more flexibility to complex object
* models when multiple inheritance is needed.
*
*
* By providing Observable as an interface, instead of the JDK'a
* {@link java.util.Observable} class, client classes have the option to mimic
* multiple inheritance by means of a delegate pattern which uses an inner
* private class which implements this interface.
*
*
* This class is based on the work done by Martin Fischer, with only minor changes.
* See references below.
*
* @see Martin
* Fischer: Observer and Observable interfaces
* @see Improved
* Observer/Observable
*
* @author Martin Fischer (original author)
* @author Richard Gomes
*/
public interface Observable {
/**
* Attaches a observer to the Observable. After attachment the observer gets
* informed about changes in the Observable.
*
* @param observer
* The observer to attach to the observable
*/
public void addObserver(final Observer observer);
/**
* Counts how many Observers were attached to this class.
*
* @return the number of Observers
* @see Observer
*/
public int countObservers();
/**
* Returns list of observers registered with the Observable. List returned is
* unmodifiable list.
*
* @return list of observers
*/
public List getObservers();
/**
* Detaches a previously attached observer to the observable. After
* detachment the observer does no longer receive change notifications from
* the observable.
*
* @param observer
* The observer to detach from the observable
*/
public void deleteObserver(final Observer observer);
/**
* Detaches all previously attached observer to the observable. After
* detachment observers do not longer receive change notifications from
* the observable.
*/
public void deleteObservers();
/**
* Notifies all attached observers about changes in the observable.
*/
public void notifyObservers();
/**
* Notifies all attached observers about changes in the observable.
*
* @param arg
* an arbitrary Object to be passed to the Observer
*/
public void notifyObservers(Object arg);
}
Ads help maintain this website.