summaryrefslogtreecommitdiff
path: root/israfil-foundation-valuemodel/src/main/java/net/israfil/foundation/valuemodel/Observable.java
blob: 574c8cfb255218a903a056fd09efe7ed2c04ce4e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/* 
 * Copyright (c) 2003-2007 Israfil Consulting Services Corporation
 * Copyright (c) 2003-2007 Christian Edward Gruber
 * All Rights Reserved
 *
 * $Id: Types.java 129 2006-12-31 23:20:02Z cgruber $
 */
package net.israfil.foundation.valuemodel;

/**
 * An interface for objects that can notify observers of changes to itself.  The
 * changing object should call the provided callback signature, with the 
 * parameter being the object that was changed in its new state.
 * 
 * Using a dynamic selector rather than a strong interface allows code
 * to be notified of the change even if it was not constructed with the 
 * notification interface, though it does need to match the signature.
 * 
 * @author <a href="mailto:cgruber@israfil.net">Christian Edward Gruber</a>
 * @author Latest: $Author: cgruber $
 * @version $Revision: 129 $
 */
public interface Observable {

    /** Add an observer to this object, with a callback method spec that will
     * be invoked upon a data change.  The callback method should contain three
     * object parameters, one for the sender, one for the old value, and one for
     * the new value.  The meaning of the value (same object, copy, values, etc.)
     * is left to the implementation object and the observers.
     */
    public void addObservers(String callback, Object ... observers);
    /** 
     * Remove observer from observable object.
     */
    public void removeObservers(Object ... observers);
    
}