La langue Java contient de nombreuses supports directs pour les modèles de conception, tels que le mode de commande, le mode agent, le mode observer, etc. Bien que Java prenne en charge ces modèles est très simple et ne peut pas répondre aux applications plus complexes. Mais dans des scénarios simples, l'utilisation de ces classes peut souvent réaliser l'effet de voir l'ombre. Par conséquent, si vous n'avez pas de besoins spéciaux, il est préférable d'utiliser ces classes en Java.
Le mode observateur, également connu sous le nom de mode de surveillance et de mode observateur, est l'un des modes de conception classiques (l'un des GOF). Dans la langue java, il existe principalement les classes et interfaces suivantes prises en charge pour ce modèle, le tout du package java.beans:
java.beans.propertychangeListener (interface) java.beans.propertychangeSupport (classe) java.beans.propertychangeevent (classe) java.beans.propertychangelistener
Ceci est une interface. De toute évidence, toutes les classes qui implémentent cette interface sont auditeur (ou observateur), qui seront intéressées par certains changements dans l'objet écouté. Cette interface a une méthode:
public void PropertyChange (PropertyChangeEvent EVT) {// TODO Méthode générée automatiquement Stume} La définition de l'interface est simple et sa fonction est évidente. Acceptez un événement (PropertyChangeEvent généré par l'auditeur), puis réagissez en fonction de cet événement.
java.beans.propertychangeSupport
Cette classe est utilisée dans la classe de l'observateur, pour sauver des observateurs enregistrés et pour leur fournir les changements de l'observateur. Il n'y a pas beaucoup de méthodes pour ce type, mais il n'est encore introduit que 100% d'entre eux, sinon vous ne pourrez pas utiliser votre cerveau, haha.
Public PropertyChangeSupport (objet SourceBean)
Ceci est le constructeur, et les paramètres sont l'auditeur. PropertyChangeListener est généralement utilisé comme propriété de l'auditeur. Généralement utilisé comme suit:
Private PropertyChangeSupport auditeurs = new PropertyChangeSupport (this);
Notez que cet auditeur ne représente pas un seul auditeur, il peut être un groupe d'auditeurs. Alors, qui sont ces auditeurs? Cette fois, j'ai utilisé la méthode suivante.
public void addpropertychangeListener (PropertyChangeListener auditeur)
Cette classe est trop facile, ajoutez l'auditeur. Tout comme le 17e Congrès national du Parti communiste chinois, si un journaliste veut interviewer, il doit d'abord s'inscrire. De toute évidence, cette méthode peut être appelée plusieurs fois (ADD). Ajout et soustraction:
public void retirepropertychangeListener (PropertyChangeListener auditeur)
Si le moniteur n'est intéressé par aucun changement dans la personne surveillée, il sera chassé par le moniteur.
D'accord, tous les journalistes sont là, et s'il y a un changement dans le moniteur, il est temps d'informer la personne. Utilisez l'une des méthodes suivantes:
public void firepropertychange (propriétéchangeevent evt) public void firepropertychange (String propertyName, boolean oldvalue, boolean newvalue) public void firepropertychange (string propertyName, int
En fait, les paramètres des trois dernières méthodes seront encapsulés dans PropertyChangeEvent, puis la première méthode sera appelée. Cependant, en réalité, nous aimons toujours appeler directement l'un des trois derniers, et nous ne nous soucions pas de l'encapsulation. Les trois dernières méthodes ont trois paramètres, parmi lesquels OldValue et NewValue sont les valeurs avant et après. Le premier consiste à changer un nom afin que les auditeurs puissent répondre en fonction de ce nom. Tout comme lors d'une réunion, toutes les informations du gouvernement seront entendues par les journalistes, mais certains journalistes ne sont intéressés que par la question de Taïwan, tandis que d'autres sont intéressés par la question de la Chine-Japon.
C'est toute l'introduction à la méthode PropertyChangeSupport. Notez que puisque PropertyChangeSupport est utilisé dans la classe (généralement un modèle) de l'observateur, ses méthodes ne sont appelées ici que lorsqu'elles sont observées.
java.beans.propertychangeevent
Je suis trop paresseux pour présenter ce cours, il suffit de regarder sa méthode principale et de comprendre ce qui se passe
public String getPropertyName () Objet public getNewValue () Objet public getoldvalue ()
Il existe trois catégories et l'autre est d'analyser des problèmes spécifiques. Prenons un exemple, tout d'abord, l'observateur:
Domaine de classe publique {ID de chaîne protégé; nom de chaîne protégé; String protégé desname; PropertyChangeSupport auditeurs = new PropertyChangeSupport (this); public String getID () {return id; } public void setid (String id) {this.id = id; FIREPROPERTYCHANGE ("Domain.id", null, id); } public String getdesName () {return desname; } public void setDesName (String Desname) {this.desname = desname; FIREPROPERTYCHANGE ("Domain.desname", null, desname); } public String getName () {Nom de retour; } public void setName (string name) {this.name = name; FireProperTyChange ("domain.name", null, nom); } public void addPropertyChangeListener (PropertyChangeListener auditeur) {auditers.addpropertychangeListener (écouteur); } public void firepropertychange (String propName, objet OldValue, objet newValue) {auditers.fireProperTyChange (propname, oldvalue, newValue); } public void removePropertyChangeListener (PropertyChangeListener Écouteur) {auditers.removePropertyChangeListener (auditeur); }} Certaines personnes sont intéressées par les trois attributs du domaine. Voici l'une de ces personnes:
classe publique SimpleObserver implémente PropertyChangeListener {.... @Override public void PropertyChange (PropertyChangeEvent EVT) {if (evt.getPropertyName (). Voici une classe de test simple:
classe publique SimpleTest {public static void main (String [] args) {SimpleObserver Observer = new SimpleObserver (); Domaine domaine = new domain (); domain.addpropertychangeListener (Observer); domain.setName ("yangsq"); ......}}De toute évidence, l'exécution de la méthode PropertyChange dans SimpleObserver peut être observée.