Wenn Java tiefer auf ein bestimmtes Niveau geht, wird das Konzept des Entwurfsmusters unweigerlich begegnen. Der Entwurfsmodus wird in Java-Systemen häufig verwendet, indem Sie bestimmte Programmiermodi befolgen. In E-Commerce-Systemen möchte ich die Anwendung von Beobachter anhand von E-Commerce-Beispielen analysieren.
Obwohl die Online -Geschäfte in Form sind und jede Website ihre eigenen Merkmale hat, hat sie auch allgemeine Gemeinsamkeiten. .
Insbesondere wenn sich das Produkt im Online -Shop in Bezug auf Namen und Preis ändert und das System die Mitglieder automatisch benachrichtigen kann, ist es eine wichtige Funktion des Online -Shops, das zwischen traditionellen Geschäften unterscheidet. Dies erfordert das Hinzufügen der Rolle des Beobachters zum Produktprodukt. Wenn sich die Produktdetails ändern, kann der Beobachter diese Änderung automatisch beobachten und zeitnahe Aktionen durchführen oder benachrichtigen.
Java API bietet uns auch eine off-the-Shelf-Observer-Schnittstelle java.util.observer. Wir müssen es nur direkt verwenden.
Wir müssen java.util.observer erweitern, um es tatsächlich zu verwenden:
1. Geben Sie die Methode des Hinzufügens/Löschens an;
2. Notification (Notification) Methoden für alle Beobachter.
Die Codekopie lautet wie folgt:
// Die Produktklasse kann direkt von JSP verwendet werden, um die Klasse mit UseBean aufzurufen.
Das Produkt der öffentlichen Klasse erweitert beobachtbar {
privater Zeichenfolge Name;
privater Schwimmerpreis;
public String getName () {return name;}
public void setName () {
this.name = name;
// Setzen Sie den Änderungspunkt setChanged ();
NotifyObServers (Name);
}
public float GetPrice () {Return Price;}
public void setPrice () {
this.price = Preis;
// Setzen Sie den Änderungspunkt setChanged ();
NotifyObservers (neuer Float (Preis));
}
// Folgendes kann der Befehl Datenbankaktualisierung sein.
public void Savetodb () {
.............
}
}
Wir haben festgestellt, dass in der SETXXX -Methode in der Produktklasse die Benachrichtigungsmethode festgelegt wird.
Hier ist ein Blick auf die Codes dieser Beobachter, was genau sie genommen haben:
Die Codekopie lautet wie folgt:
// Observer nameObserver wird hauptsächlich verwendet, um den Produktnamen (Name) zu beobachten.
nameobserver im öffentlichen Klassen implementiert Observer {
private String name = null;
public void -Update (Obsable OBJ, Objekt arg) {
if (arg Instance von String) {
name = (String) arg;
// Der Wert für den Produktname Änderung ist in Namen system.out.println ("nameObserver: name ändere auf"+name);
}
}
}
// Observer PriceObserver wird hauptsächlich zur Beobachtung der Produktpreise verwendet.
Public Class PriceObserver implementiert Observer {
privater Schwimmerpreis = 0;
public void -Update (Obsable OBJ, Objekt arg) {
if (arginstanceof float) {
Preis = ((float) arg) .floatValue ();
System.out.println ("PriceObServer: Preisänderung zu"+Preis);
}
}
}
In JSP können wir dieses Observer -Programm offiziell ausführen:
Die Codekopie lautet wie folgt:
<JSP: UseBean ID = "Produkt" Scope = "Session" />
<jsp: setProperty name = "product" property = "*" />
<jsp: useBean id = "nameObs" scope = "session" />
<jsp: setProperty name = "product" property = "*" />
<JSP: UseBean ID = "PriceObs" Scope = "Session" />
<jsp: setProperty name = "product" property = "*" />
<%
if (request.getParameter ("speichern")! = null)
{
product.saveToDB ();
out.println ("Produktdatenänderungen werden gespeichert! Und der Kunde wurde automatisch benachrichtigt");
}anders{
// add to Observer product.addobserver (nameObs);
product.addobserver (Preis);
%>
//request.getRequesturi () ist der Programmname, der diesen JSP generiert, was bedeutet
<Eingabetyp = Hidden name = "speichern" value = "1">
Produktname: <Eingabe type = text name = "name">
Produktpreis: <Eingabe type = Text name = "Preis">
<Eingabetyp = Senden>
</form>
<%
}
%>
Bei der Ausführung des JSP -Programms wird eine Formulareintragsschnittstelle angezeigt. des jsp.
Da hier das automatische Zuweisungskonzept der Daten JavaBeans verwendet wird, führt das tatsächliche Programm automatisch die SetName SetPrice -Anweisung aus. Sie finden die folgenden Informationen in der Serverkonsole:
Die Codekopie lautet wie folgt:
NAMEOBSERVER: Name Änderung in ?????
PriceObServer: Preisänderung zu ??? (der im JSP -Formular eingegebene Produktpreis);
Dies zeigt, dass der Beobachter bereits handelt.
Gleichzeitig erhalten Sie Informationen über den Browser, in dem Sie JSP ausführen:
1. Änderungen der Produktdaten speichern!
Da der obige Artikel das Konzept von JSP verwendet, impliziert er viele automatische Aktionen.
Die Codekopie lautet wie folgt:
öffentliche Klassen -Test {
public static void main (String args []) {
Produktprodukt = neues Produkt ();
NameObserver nameObs = new nameObserver ();
PriceObServer PriceObs = neuer PreisObserver ();
// add to Observer product.addobserver (nameObs);
product.addobserver (Preis);
product.setName ("Orange ist rot");
product.setPrice (9.22f);
}
}
Sie finden die folgenden Informationen:
NAMEOBSERVER: Name Änderung in Orange ist rot
PriceObServer: Preisänderung auf 9,22
Dies zeigt, dass der Beobachter handelt.