色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

java 設(shè)計(jì)模式之Observer

瀏覽:71日期:2024-06-27 14:25:26
內(nèi)容: Java深入到一定程度,就不可避免的碰到設(shè)計(jì)模式(design pattern)這一概念,了解設(shè)計(jì)模式,將使自己對(duì)java中的接口或抽象類應(yīng)用有更深的理解.設(shè)計(jì)模式在java的中型系統(tǒng)中應(yīng)用廣泛,遵循一定的編程模式,才能使自己的代碼便于理解,易于交流,Observer(觀察者)模式是比較常用的一個(gè)模式,尤其在界面設(shè)計(jì)中應(yīng)用廣泛,而本站所關(guān)注的是Java在電子商務(wù)系統(tǒng)中應(yīng)用,因此想從電子商務(wù)實(shí)例中分析Observer的應(yīng)用.雖然網(wǎng)上商店形式多樣,每個(gè)站點(diǎn)有自己的特色,但也有其一般的共性,單就'商品的變化,以便及時(shí)通知訂戶'這一點(diǎn),是很多網(wǎng)上商店共有的模式,這一模式類似Observer patern.具體的說,如果網(wǎng)上商店中商品在名稱 價(jià)格等方面有變化,如果系統(tǒng)能自動(dòng)通知會(huì)員,將是網(wǎng)上商店區(qū)別傳統(tǒng)商店的一大特色.這就需要在商品product中加入Observer這樣角色,以便product細(xì)節(jié)發(fā)生變化時(shí),Observer能自動(dòng)觀察到這種變化,并能進(jìn)行及時(shí)的update或notify動(dòng)作. IMG http://www.jdon.com/designpatterns/images/observer1.jpg[/IMG]Java的API還為為我們提供現(xiàn)成的Observer接口Java.util.Observer.我們只要直接使用它就可以.我們必須extends Java.util.Observer才能真正使用它:1.提供Add/Delete observer的方法;2.提供通知(notisfy) 所有observer的方法;//產(chǎn)品類 可供Jsp直接使用UseBean調(diào)用 該類主要執(zhí)行產(chǎn)品數(shù)據(jù)庫插入 更新public class product extends Observable{ private String name;private float price;public String getName(){ return name;}public void setName(){ this.name=name;//設(shè)置變化點(diǎn) setChanged(); notifyObservers(name);} public float getPrice(){ return price;}public void setPrice(){ this.price=price;//設(shè)置變化點(diǎn) setChanged(); notifyObservers(new Float(price)); }//以下可以是數(shù)據(jù)庫更新 插入命令.public void saveToDb(){.....................} 我們注意到,在product類中 的setXXX方法中,我們?cè)O(shè)置了 notify(通知)方法, 當(dāng)Jsp表單調(diào)用setXXX(如何調(diào)用見我的另外一篇文章),實(shí)際上就觸發(fā)了notisfyObservers方法,這將通知相應(yīng)觀察者應(yīng)該采取行動(dòng)了.下面看看這些觀察者的代碼,他們究竟采取了什么行動(dòng)://觀察者NameObserver主要用來對(duì)產(chǎn)品名稱(name)進(jìn)行觀察的public class NameObserver implements Observer{private String name=null;public void update(Observable obj,Object arg){if (arg instanceof String){ name=(String)arg; //產(chǎn)品名稱改變值在name中 System.out.println('NameObserver :name changet to '+name);}}}//觀察者PriceObserver主要用來對(duì)產(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í)行這段觀察者程序:<%if (request.getParameter('save')!=null){ product.saveToDb();out.println('產(chǎn)品數(shù)據(jù)變動(dòng) 保存! 并已經(jīng)自動(dòng)通知客戶'); }else{//加入觀察者product.addObserver(nameobs);product.addObserver(priceobs);%>//request.getRequestURI()是產(chǎn)生本jsp的程序名,就是自己調(diào)用自己<form action='<%=request.getRequestURI()%>' method=post><input type=hidden name='save' value='1'>產(chǎn)品名稱:<input type=text name='name' >產(chǎn)品價(jià)格:<input type=text name='price'><input type=submit></form><%} %> 執(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ù)器控制臺(tái)中發(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)了.!! Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 99久久视频| caoporen免费公开视频上传 | 久久久久久久久久综合情日本 | 18成人网| 国产高清精品久久久久久久 | 日韩欧美在线观看一区 | 国产一级高清视频 | 国产精品夜色视频一级区 | 在线播放亚洲美女视频网站 | 99热久久国产这里是精品 | 特级aa一级欧美毛片 | 一 级做人爱全视频在线看 一本不卡 | 免费99热在线观看 | 成人区视频爽爽爽爽爽 | 欧美一区二区精品系列在线观看 | 日韩在线国产精品 | 日本高清在线精品一区二区三区 | 精品国产中文一级毛片在线看 | 中国国产一国产一级毛片视频 | 免费精品久久久久久中文字幕 | 欧美亚洲国产人成aaa | 欧美毛片性视频区 | 欧美人在线一区二区三区 | 欧美日韩精品一区三区 | 特级无码a级毛片特黄 | 日韩欧美国产另类 | 欧美一区二区三区视频在线 | 国产女人毛片 | 一级毛片在线不卡直接观看 | 九九九在线视频 | 美女张开腿让男人桶爽免 | 亚洲国产激情 | 4455四色永久免费 | 怡红院亚洲红怡院天堂麻豆 | 男子操女子 | 亚洲欧美天堂 | 国产伦久视频免费观看视频 | 99久久亚洲综合精品网站 | 在线观看欧美一区 | chinese农村野战videos | 日韩午夜三级 |