package sk.tomsik68.mclauncher.api.common;
/**
* General interface for any Observable.
* How this works is, that once observable changes, it notifies all {@link IObserver}s
* about the change.
*
* @param <E> What will be changing
* @author Tomsik68
*/
public interface IObservable<E> {
/**
* Adds specified observer to this observable.
*
* @param obs Observer to add
*/
public void addObserver(IObserver<E> obs);
/**
* Deletes specified observer, so that it will not longer receive updates
* from this observable.
*
* @param obs Observer to delete
*/
public void deleteObserver(IObserver<E> obs);
/**
* Notifies observers about change of specified Object.
*
* @param changedObj Object that changed.
*/
public void notifyObservers(E changedObj);
}