class Event
{
private Object mContainer;
public Event(Object container) { mContainer = container; }
public void fire(Object caller) { /*проверить что mContainer равно caller. Если что - кинуть исключение. */ }
public void addReaction(Reaction reaction) { /* проверить где содержится reaction и какого типа mContainer и действовать соответственно.*/ }
}
class Reaction
{
Object mContainer;
public Reaction(Object container) { mContainer = container; }
public abstract void react(...);
}
class Event
{
public void subscribe(...){}
public class ForOwner
{
fire(...){}
addReaction(...){}
}
}