2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Il modello Observer è noto anche come modello Pubblica/Sottoscrivi. GOF definisce il modello dell'osservatore come segue: Definisce una relazione di dipendenza uno-a-molti tra gli oggetti, consentendo a più oggetti osservatore di concentrarsi sullo stesso oggetto contemporaneamente. Quando lo stato dell'oggetto cambia, tutti gli oggetti che dipendono da esso ottengono Notificato e aggiornato automaticamente.
Come mostrato nella figura seguente, il modello dell'osservatore contiene 5 tipi di oggetti.
Diamo un'occhiata all'implementazione specifica.
(1) Interfaccia Observer Observer.java definisce un'interfaccia di aggiornamento unificata update(). Il suo codice sorgente è mostrato nel seguente programma.
package behavior.observer;
/**
* @author Minggg
* 观察者接口
*/
public interface Observer {
public void update();
}
(2) La classe di implementazione dell'osservatore Observer1.java è un'implementazione specifica di un osservatore e la sua funzione di aggiornamento viene utilizzata per inviare una stringa alla console. Il suo codice sorgente è mostrato nel seguente programma.
package behavior.observer;
/**
* @author Minggg
* 具体观察者
*/
public class Observer1 implements Observer {
public void update(){
System.out.println("观察者1得到通知!");
}
}
(3) La classe di implementazione dell'osservatore Observer2.java è un'implementazione specifica di un altro osservatore e la sua funzione di aggiornamento viene utilizzata per inviare una stringa alla console. Il suo codice sorgente è mostrato nel seguente programma.
package behavior.observer;
/**
* @author Minggg
* 具体观察者
*/
public class Observer2 implements Observer {
public void update(){
System.out.println("观察者2得到通知!");
}
}
(4) L'interfaccia osservata Object.java definisce tre funzioni di interfaccia per gli osservatori operativi e definisce un'interfaccia di funzione operativa specifica per rappresentare le proprie funzioni. Il suo codice sorgente è mostrato nel seguente programma.
package behavior.observer;
/**
* @author Minggg
* 被观察者接口
*/
public interface Subject {
// 增加观察者
public void attach(Observer observer);
// 删除观察者
public void detach(Observer observer);
// 通知所有观察者
public void notifyObservers();
// 自身的操作接口
public void operation();
}
(5) La classe astratta osservata AbstractSubject.java fornisce un vettore di elenco vettoriale per salvare tutti gli oggetti dell'osservatore e scrivere funzioni di implementazione per gestire gli oggetti dell'elenco. Il suo codice sorgente è mostrato nel seguente programma.
package behavior.observer;
import java.util.Enumeration;
import java.util.Vector;
/**
* @author Minggg
* 被观察者抽象类
*/
public abstract class AbstractSubject implements Subject {
private Vector