Observer(觀察者)模式是比較常用的一個模式
雖然網上商店形式多樣
具體的說
Java 的API 還為為我們提供現成的Observer 接口Java
我們必須extends Java
//產品類 可供Jsp 直接使用UseBean 調用 該類主要執行產品數據庫插
入 更新
public class product extends Observable{
private String name;
private float price;
public String getName(){
return name;
}
public void setName(){
this
//設置變化點
setChanged();
notifyObservers(name);
}
public float getPrice(){
return price;
}
public void setPrice(){
this
//設置變化點
setChanged();
notifyObservers(new Float(price));
}
//以下可以是數據庫更新 插入命令
public void saveToDb(){
}
我們注意到
下面看看這些觀察者的代碼
//觀察者NameObserver 主要用來對產品名稱(name)進行觀察的
public class NameObserver implements Observer{
private String name=null;
public void update(Observable obj
if (arg instanceof String){
name=(String)arg;
//產品名稱改變值在name 中
System
}
}
}
//觀察者PriceObserver 主要用來對產品價格(price)進行觀察的
public class PriceObserver implements Observer{
private float price=
public void update(Observable obj
if (arg instanceof Float){
price=((Float)arg)
System
}
}
}
Jsp 中我們可以來正式執行這段觀察者程序:
<jsp:useBean id=
<jsp:setProperty name=
<jsp:useBean id=
<jsp:setProperty name=
<jsp:useBean id=
<jsp:setProperty name=
<%
if (request
{
product
out
}else{
//加入觀察者
product
product
%>
//request
<form action=
<input type=hidden name=
產品名稱:<input type=text name=
產品價格:<input type=text name=
<input type=submit>
</form>
<%
}
%>
執行改Jsp 程序
if (request
由於這裡使用了數據javabeans 的自動賦值概念
NameObserver :name changet to ?????(Jsp 表單中輸入的產品名稱)
PriceObserver :price changet to ???(Jsp 表單中輸入的產品價格);
這說明觀察者已經在行動了
同時你會在執行jsp 的浏覽器端得到信息:
產品數據變動 保存! 並已經自動通知客戶
上文由於使用jsp 概念
public class Test {
public static void main(String args[]){
Product product=new Product();
NameObserver nameobs=new NameObserver();
PriceObserver priceobs=new PriceObserver();
//加入觀察者
product
product
product
product
}
}
你會在發現下面信息::
NameObserver :name changet to 橘子紅了
PriceObserver :price changet to
這說明觀察者在行動了
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27356.html