![]() | Biologie | Chimie | Didactica | Fizica | Geografie | Informatica |
Istorie | Literatura | Matematica | Psihologie |
Sabloane de comportament
2 OBSERVER
Diagrama.
Exemple.
1.(J.Cooper)
Modurile de afisare sunt definite prin intermediul observatorilor ("Observers") si implementeaza interfata:
abstract interface Observer
Datele sunt referite drept "Subiect" si implementeaza:
abstract interface Subject
Fie un program al carui Subiect ("data repository") este reprezentat de fereastra:
implementata de codul urmator:
public class Watch2L extends Jframe
implements ActionListener, ItemListener, Subject
//se creaza doi observatori: unul care afiseaza culoarea si numele sau, si altul care adauga //culoarea intr-o lista:
//---------create observers---------
ColorFrame cframe = new ColorFrame(this);
ListFrame lframe = new ListFrame(this);
//la fiecare actionare a unui buton radio, se apeleaza metoda sendNotify a fiecarui Observator care //si-a inregistrat interesul fata de datele din Subiect:
public void itemStateChanged(ItemEvent e)
private void notifyObservers(JRadioButton rad)
Programul final arata astfel:
//Clasele ce definesc Observatorii
class ColorFrame extends Jframe implements Observer
public void sendNotify(String s)
public void paint(Graphics g)
.
2. (B.Eckel)
Pe o grila sunt plasate patratele de diferite culori. Cand se selecteaza cu mouse-ul o patratica, toate casutele adiacente isi schimba culoarea in cea a casutei selectate.
//: observer:BoxObserver.java
// Demonstration of Observer pattern using
// Java's built-in observer classes.
package observer;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
// You must inherit a new type of Observable:
class BoxObservable extends Observable
}
public class BoxObserver extends JFrame
public static void main(String[] args)
}
class OCBox extends JPanel implements Observer ;
static Random rand = new Random();
static final Color newColor()
OCBox(int x, int y, Observable notifier)
public void paintComponent(Graphics g)
class ML extends MouseAdapter
}
public void update(Observable o, Object arg)
}
private final boolean nextTo(OCBox b)
} ///:~
Tema 4. (B. Eckel) Creati un sistem Observer minimal utilizand java.util.Timer in interiorul clasei Observable, pentru a genera evenimente ce sunt raportate catre Observers (clasele observator). Creati cativa observatori (folosind clase interioare anonime) si inregistrati-i cu Observable si aratati ca sunt apelati cand apar evenimentele de la Timer.
Copyright © 2025 - Toate drepturile rezervate