//觀察者PriceObserver 主要用來對產(chǎn)品價(jià)格(price)進(jìn)行觀察的。
public class PriceObserver implements Observer{
private float price=0;
public void update(Observable obj,Object arg){
if (arg instanceof Float){
price=((Float)arg).floatValue();
System.out.println("PriceObserver :price changet to "+price);
}
}
}
Jsp 中我們可以來正式執(zhí)行這段觀察者程序:
//request.getRequestURI()是產(chǎn)生本jsp 的程序名,就是自己調(diào)用自己。
<%
}
%>
執(zhí)行改Jsp 程序,會(huì)出現(xiàn)一個(gè)表單錄入界面,需要輸入產(chǎn)品名稱產(chǎn)品價(jià)格,點(diǎn)按Submit 后,還是執(zhí)行該jsp 的。
if (request.getParameter("save")!=null)之間的代碼。
由于這里使用了數(shù)據(jù)javabeans 的自動(dòng)賦值概念,實(shí)際程序自動(dòng)執(zhí)行了setName setPrice語句。你會(huì)在服務(wù)器控制臺中發(fā)現(xiàn)下面信息:
NameObserver :name changet to (Jsp 表單中輸入的產(chǎn)品名稱);
PriceObserver :price changet to (Jsp 表單中輸入的產(chǎn)品價(jià)格);
這說明觀察者已經(jīng)在行動(dòng)了!!
同時(shí)你會(huì)在執(zhí)行jsp 的瀏覽器端得到信息:
產(chǎn)品數(shù)據(jù)變動(dòng),保存! 并已經(jīng)自動(dòng)通知客戶。
上文由于使用jsp 概念,隱含很多自動(dòng)動(dòng)作,現(xiàn)將調(diào)用觀察者的Java 代碼寫如下:
public class Test {
public static void main(String args[]){
Product product=new Product();
NameObserver nameobs=new NameObserver();
PriceObserver priceobs=new PriceObserver();
//加入觀察者
product.addObserver(nameobs);
product.addObserver(priceobs);
product.setName("橘子紅了");
product.setPrice(9.22f);
}
}
你會(huì)在發(fā)現(xiàn)下面信息:
NameObserver :name changet to 橘子紅了
PriceObserver :price changet to 9.22
這說明觀察者在行動(dòng)了!!
相關(guān)推薦:2009年9月計(jì)算機(jī)等考二級ACCESS模擬試題匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |