2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Le modèle Observer est également connu sous le nom de modèle Publier/Abonner. GOF définit le modèle d'observateur comme suit : Définissez une relation de dépendance un-à-plusieurs entre les objets, permettant à plusieurs objets observateurs de se concentrer sur le même objet en même temps. Lorsque l'état de l'objet change, tous les objets qui en dépendent le reçoivent. Notifié et mis à jour automatiquement.
Comme le montre la figure ci-dessous, le modèle d'observateur contient 5 types d'objets.
Examinons la mise en œuvre spécifique.
(1) Interface Observer Observer.java définit une interface de mise à jour unifiée update(). Son code source est affiché dans le programme suivant.
package behavior.observer;
/**
* @author Minggg
* 观察者接口
*/
public interface Observer {
public void update();
}
(2) La classe d'implémentation d'observateur Observer1.java est une implémentation spécifique d'un observateur, et sa fonction de mise à jour est utilisée pour afficher une chaîne sur la console. Son code source est affiché dans le programme suivant.
package behavior.observer;
/**
* @author Minggg
* 具体观察者
*/
public class Observer1 implements Observer {
public void update(){
System.out.println("观察者1得到通知!");
}
}
(3) La classe d'implémentation d'observateur Observer2.java est une implémentation spécifique d'un autre observateur, et sa fonction de mise à jour est utilisée pour afficher une chaîne sur la console. Son code source est affiché dans le programme suivant.
package behavior.observer;
/**
* @author Minggg
* 具体观察者
*/
public class Observer2 implements Observer {
public void update(){
System.out.println("观察者2得到通知!");
}
}
(4) L'interface observée Subject.java définit trois fonctions d'interface pour les observateurs opérationnels et définit une interface de fonction opérationnelle spécifique pour représenter ses propres fonctions. Son code source est affiché dans le programme suivant.
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 abstraite observée AbstractSubject.java fournit un vecteur de liste de vecteurs pour enregistrer tous les objets observateurs et écrire des fonctions d'implémentation pour faire fonctionner les objets de liste. Son code source est affiché dans le programme suivant.
package behavior.observer;
import java.util.Enumeration;
import java.util.Vector;
/**
* @author Minggg
* 被观察者抽象类
*/
public abstract class AbstractSubject implements Subject {
private Vector