Когда Java углубляется до определенного уровня, она неизбежно столкнется с концепцией дизайна. Режим проектирования широко используется в Java Medium Systems. В системах электронной коммерции, поэтому я хочу проанализировать применение наблюдателя из примеров электронной коммерции.
Хотя интернет -магазины разнообразны по форме, и каждый сайт имеет свои собственные характеристики, он также имеет свою общую общность. Полем
В частности, если продукт в интернет -магазине изменяется с точки зрения имени и цены, и если система может автоматически уведомлять участников, это станет основной особенностью интернет -магазина, отличающегося между традиционными магазинами. Это требует добавления роли наблюдателя в продукт продукта, так что при изменении деталей продукта наблюдатель может автоматически наблюдать за этим изменением и выполнять своевременное обновление или уведомление действий.
Java API также предоставляет нам готовый интерфейс наблюдателя java.util.observer. Нам просто нужно использовать его напрямую.
Мы должны расширить java.util.observer, чтобы фактически использовать его:
1. Предоставьте метод добавления/удаления наблюдателя;
2. Предоставьте уведомления (не согласные) методы для всех наблюдателей.
Кода -копия выглядит следующим образом:
// Класс продуктов может быть непосредственно использован JSP для вызова класса с помощью eSebean.
Продукт открытого класса расширяет наблюдаемый {
Приватное название строки;
Частная цена поплавок;
public String getName () {return name;}
public void setName () {
this.name = name;
// установить точку изменения setchanged ();
notifyObservers (имя);
}
public float getPrice () {return Price;}
public void setPrice () {
this.price = цена;
// установить точку изменения setchanged ();
notifyObservers (новый поплавок (цена));
}
// Следующая может быть команда вставки обновления базы данных.
public void savetodb () {
.............
}
}
Мы заметили, что в методе SETXXX в классе продукта мы установили метод уведомления.
Вот посмотрите на коды этих наблюдателей, что именно они взяли:
Кода -копия выглядит следующим образом:
// stemver nameobserver в основном используется для соблюдения названия продукта (имя).
Общедоступный класс nameobserver реализует наблюдатель {
частная строка имени = null;
Общественное обновление void (наблюдаемый obj, Object arg) {
if (arg exanceof string) {
name = (string) arg;
// Значение изменения имени продукта в имени System.out.println ("nameobserver: изменение имени на"+name);
}
}
}
// Наблюдатель PriceObserver в основном используется для наблюдения за ценами на продукцию.
Общедоступный класс PriceObserver реализует наблюдатель {
Частная цена плавания = 0;
Общественное обновление void (наблюдаемый obj, Object arg) {
if (arg ancessionof float) {
цена = ((float) arg) .floatvalue ();
System.out.println ("Priceobserver: изменение цены"+цена);
}
}
}
В JSP мы можем официально выполнить эту программу наблюдателя:
Кода -копия выглядит следующим образом:
<jsp: id expean = "product" 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 ("Сохранить")! = NULL)
{
product.savetodb ();
out.println («Изменения данных продукта сохраняются! И клиент был автоматически уведомлен»);
}еще{
// Добавить в Observer Product.Addobserver (nameObs);
product.addobserver (Priceobs);
%>
//request.getRequesturi () - это имя программы, которое генерирует этот JSP, что означает, что это означает <form action = "<%= request.getRequesturi ()%>" method = post>
<input type = hidden name = "save" value = "1">
Имя продукта: <input type = text name = "name">
Цена продукта: <input type = text name = "цена">
<input type = отправить>
</form>
<%
}
%>
При выполнении программы JSP появится интерфейс записи формы. JSP.
Поскольку здесь используется концепция автоматического назначения данных Javabeans, фактическая программа автоматически выполняет оператор SetName SetPrice. Вы найдете следующую информацию в консоли сервера:
Кода -копия выглядит следующим образом:
Nameobserver: изменение имени на ?????
PriceObserver: изменение цены на?
Это показывает, что наблюдатель уже действует.
В то же время вы получите информацию в браузере, где вы выполняете JSP:
1. Сохраните изменения данных продукта! И автоматически уведомляйте клиентов.
Поскольку приведенная выше статья использует концепцию JSP, она подразумевает много автоматических действий.
Кода -копия выглядит следующим образом:
открытый тест класса {
public static void main (String args []) {
Продукт продукта = новый продукт ();
Nameobserver nameobs = new nameobserver ();
PriceObserver PriceObs = new PriceObserver ();
// Добавить в Observer Product.Addobserver (nameObs);
product.addobserver (Priceobs);
Product.SetName («Orange is Red»);
Product.SetPrice (9.22f);
}
}
Вы найдете следующую информацию:
Nameobserver: изменение имени на апельсин красный
PriceObserver: изменение цены до 9,22
Это показывает, что наблюдатель действует.