OTExample Observer/Main
< OTExample Observer
Revision as of 07:47, 23 February 2010 by Unnamed Poltroon (Talk) (New page: ===Main program driving the Observer example=== <source lang="otj"> package flower_example; /** * @author Bruce Eckel (original Java example) * @author Miguel P. Monteiro (adaptation to...)
Main program driving the Observer example
package flower_example; /** * @author Bruce Eckel (original Java example) * @author Miguel P. Monteiro (adaptation to OT/J) * * Driver for this example of Observer */ public class Main { public static void main(String[] args) { ObservingOpen openingObs = new ObservingOpen(); ObservingClose closingObs = new ObservingClose(); openingObs.activate(); closingObs.activate(); Flower flower = new Flower(); Bee beeA = new Bee("A"); Bee beeB = new Bee("B"); Hummingbird birdA = new Hummingbird("A"); Hummingbird birdB = new Hummingbird("B"); openingObs.mapSubject2Observer(flower, birdA); openingObs.mapSubject2Observer(flower, birdB); openingObs.mapSubject2Observer(flower, beeA); openingObs.mapSubject2Observer(flower, beeB); closingObs.mapSubject2Observer(flower, birdA); closingObs.mapSubject2Observer(flower, birdB); closingObs.mapSubject2Observer(flower, beeA); closingObs.mapSubject2Observer(flower, beeB); System.out.println("Day 1: all observers follow the flower:"); flower.open(); flower.close(); System.out.println("Day 2: Hummingbird B decides to sleep in."); openingObs.removeObserverFromSubject(flower, birdB); flower.open(); System.out.println(" The flower is already open, no change:"); flower.open(); System.out.println("Bee A doesn't want to go to bed."); closingObs.removeObserverFromSubject(flower, beeA); flower.close(); System.out.println(" The flower is already closed, no change:"); flower.close(); System.out.println("Day 3: All observers lose interest in the flower's opening."); openingObs.removeAllObserversFromSubject(flower); flower.open(); flower.close(); openingObs.deactivate(); closingObs.deactivate(); System.out.println("\nterminated."); } }