Using Java Observer/Observable pattern
import java.util.Observable; public interface ILinkableComponent extends IDescribable, IIdentifiable { // .... other ILinkableComponent methods // Observable for status changed events, use to add (and remove) Observers. // Will call Observer.update(Observable o, Object arg), with arg of type // LinkableComponentEventArgs. public Observable getStatusChangedObservable(); // Observable for exchange item value changed events, use to add (and remove) // Observers (Observer is a base class in Java). Will call Observer.update( // Observable o, Object arg), with arg of type ExchangeItemEventArgs. public Observable getExchangeItemValueChangedObservable(); }