Lorsque Java va plus profondément à un certain niveau, il rencontrera inévitablement le concept de modèle de conception. Le mode de conception est largement utilisé dans les systèmes de taille moyenne Java. Dans les systèmes de commerce électronique, je souhaite donc analyser l'application de l'observateur à partir d'exemples de commerce électronique.
Bien que les magasins en ligne soient diversifiés et que chaque site a ses propres caractéristiques, il a également son point de vue général. .
Plus précisément, si le produit de la boutique en ligne change en termes de nom et de prix, et si le système peut informer automatiquement les membres, ce sera une caractéristique majeure de la boutique en ligne distinguant entre les magasins traditionnels. Cela nécessite d'ajouter le rôle d'Observer au produit du produit, de sorte que lorsque les détails du produit changent, l'observateur peut automatiquement observer ce changement et effectuer des actions de mise à jour en temps opportun ou informer les actions.
Java API nous fournit également une interface d'observateur standard java.util.observer. Nous avons juste besoin de l'utiliser directement.
Nous devons étendre java.util.observer pour l'utiliser réellement:
1. Fournissez la méthode d'observateur ADD / DELETE;
2. Fournir des méthodes de notification (Notisfy) pour tous les observateurs.
La copie de code est la suivante:
// La classe de produits peut être directement utilisée par JSP pour appeler la classe à l'aide de USEBean.
Le produit de classe publique étend observable {
nom de chaîne privé;
prix flottant privé;
public String getName () {nom de retour;}
public void setName () {
this.name = name;
// Définit le point de changement setChanged ();
notifyObservers (nom);
}
public float getPrice () {prix de retour;}
public void setPrice () {
this.price = prix;
// Définit le point de changement setChanged ();
notifyObservers (nouveau flotteur (prix));
}
// Ce qui suit peut être la commande d'insert de mise à jour de base de données.
public void SaveToDB () {
.............
}
}
Nous avons remarqué que dans la méthode Setxxx dans la classe de produits, nous définissons la méthode de notification.
Voici un aperçu des codes de ces observateurs, qu'ont exactement pris:
La copie de code est la suivante:
// Observer NameObserver est principalement utilisé pour observer le nom du produit (nom).
classe publique NameObserver implémente l'observateur {
Nom de chaîne privée = null;
Mise à jour du public (obj observable, objet arg) {
if (arg instanceof String) {
name = (String) arg;
// La valeur de changement de nom du produit est dans le nom System.out.println ("nameObserver: le changement de nom en" + nom);
}
}
}
// Observer PriceObserver est principalement utilisé pour observer les prix des produits.
classe publique PriceObserver implémente l'observateur {
Prix de flotteur privé = 0;
Mise à jour du public (obj observable, objet arg) {
if (arg instanceof float) {
prix = ((float) arg) .floatValue ();
System.out.println ("PriceObserver: Changement de prix à" + prix);
}
}
}
Dans JSP, nous pouvons officiellement exécuter ce programme d'observateurs:
La copie de code est la suivante:
<jsp: usebean id = "product" scope = "session" />
<jsp: setProperty name = "product" propriété = "*" />
<jsp: usebean id = "nameobs" scope = "session" />
<jsp: setProperty name = "product" propriété = "*" />
<jsp: usebean id = "PriceObs" scope = "session" />
<jsp: setProperty name = "product" propriété = "*" />
<%
if (request.getParameter ("Save")! = null)
{
Product.SaveToDB ();
out.println ("Les modifications de données du produit sont enregistrées! Et le client a été automatiquement informé");
}autre{
// Ajouter à Observer Product.AddObserver (NameObs);
Product.AddObserver (PriceObs);
%>
//request.getRequestturi () est le nom du programme qui génère ce jsp, ce qui signifie vous appeler <formulaire action = "<% = request.getRequesturi ()%>" Method = Post>
<input type = Hidden Name = "Save" value = "1">
Nom du produit: <entrée type = nom de texte = "name">
Prix du produit: <Type d'entrée = Text Name = "Price">
<Type d'entrée = soumettre>
</ form>
<%
}
%>
Lors de l'exécution du programme JSP, une interface d'entrée de formulaire apparaît. du jsp.
Étant donné que le concept d'attribution automatique des données javabeans est utilisé ici, le programme réel exécute automatiquement l'instruction SETNAME SETPRICE. Vous trouverez les informations suivantes dans la console du serveur:
La copie de code est la suivante:
NameObserver: Changement de nom pour ????? (le nom du produit entré dans le formulaire JSP)
PriceObserver: Changement de prix à ??? (le prix du produit entré dans le formulaire JSP);
Cela montre que l'observateur agit déjà.
En même temps, vous obtiendrez des informations sur le navigateur où vous exécutez JSP:
1. Enregistrer les modifications des données du produit! Et informer automatiquement les clients
Étant donné que l'article ci-dessus utilise le concept de JSP, il implique de nombreuses actions automatiques.
La copie de code est la suivante:
Test de classe publique {
public static void main (String args []) {
Produit produit = nouveau produit ();
NameObserver nameObs = new nameoBserver ();
PriceObserver PriceObs = nouveau PriceObserver ();
// Ajouter à Observer Product.AddObserver (NameObs);
Product.AddObserver (PriceObs);
product.setName ("Orange est rouge");
product.setPrice (9.22f);
}
}
Vous trouverez les informations suivantes:
NameObserver: le changement de nom en orange est rouge
PriceObserver: Changement de prix à 9,22
Cela montre que l'observateur agit.