- 浏览: 694073 次
- 性别:
- 来自: 沈阳
文章分类
- 全部博客 (270)
- Ant Tool Script (12)
- XMLDigest (5)
- MyEclipse8.6 (1)
- RedHat (5)
- SVNVersionController (4)
- BatOperation (6)
- JspAndFaceWeb (66)
- javaSwing (18)
- PHP (12)
- J2SE (6)
- TestToolAndTestManual (12)
- C# (34)
- Java PatternDesign (20)
- Axis2AndWebService (5)
- ITLive (2)
- DBAndControl (10)
- C/C++ (8)
- Andriod (7)
- Python (7)
- JavaWork (16)
- Android-QA (1)
- Apache-Wicket (1)
- POI (1)
- JQuery (2)
- Struts2 (1)
- Flex&Flash (6)
- sdsdsd (0)
- 1212 (0)
最新评论
-
anayomin:
对九楼继续改进
public static <T> ...
Java List 分页 -
H4X0R:
来学习学习,赞一个
Aqua Data Studio 导出SQL -
yankai0219:
现在出现这个错误 Fatal error: Class 'PH ...
纯PHP搭建Apache+Eclipse+xDebug+PHPUnit+MakeGood -
yankai0219:
您好,我在搭建环境中提示PHPUnit_Framework_T ...
纯PHP搭建Apache+Eclipse+xDebug+PHPUnit+MakeGood -
wilsonchen:
chenhailong 写道wilsonchen 写道chen ...
C# RSA和Java RSA互通
Java PatternDesign of GOF(四人帮力作,享誉15年)
第十四模式
板桥里人 http://www.jdon.com 2002/3/16
Java深入到一定程度,就不可避免的碰到设计模式(design pattern)这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广泛,遵循一定的编程模式,才能使自己的代码便于理解,易于交流,Observer(观察者)模式是比较常用的一个模式,尤其在界面设计中应用广泛,而本站所关注的是Java在电子商务系统中应用,因此想从电子商务实例中分析Observer的应用.
虽然网上商店形式多样,每个站点有自己的特色,但也有其一般的共性,单就"商品的变化,以便及时通知订户"这一点,是很多网上商店共有的模式,这一模式类似Observer patern观察者模式.
具体的说,如果网上商店中商品在名称 价格等方面有变化,如果系统能自动通知会员,将是网上商店区别传统商店的一大特色.这就需要在商品product中加入Observer这样角色,以便product细节发生变化时,Observer能自动观察到这种变化,并能进行及时的update或notify动作.
Java的API还为为我们提供现成的Observer接口Java.util.Observer.我们只要直接使用它就可以.
我们必须extends Java.util.Observer才能真正使用它:
1.提供Add/Delete observer的方法;
2.提供通知(notisfy) 所有observer的方法;
//产品类 可供Jsp直接使用UseBean调用 该类主要执行产品数据库插入 更新 public class product extends Observable{ private String name; public String getName(){ return name;} } public float getPrice(){ return price;} } } |
我们注意到,在product类中 的setXXX方法中,我们设置了 notify(通知)方法, 当Jsp表单调用setXXX(如何调用见我的另外一篇文章),实际上就触发了notisfyObservers方法,这将通知相应观察者应该采取行动了.
下面看看这些观察者的代码,他们究竟采取了什么行动:
//观察者NameObserver主要用来对产品名称(name)进行观察的 private String name=null; public void update(Observable obj,Object arg){ name=(String)arg; } } } //观察者PriceObserver主要用来对产品价格(price)进行观察的 private float price=0; public void update(Observable obj,Object arg){ price=((Float)arg).floatValue(); } } } |
Jsp中我们可以来正式执行这段观察者程序:
<jsp:useBean id="product" scope="session" class="Product" /> <jsp:useBean id="nameobs" scope="session" class="NameObserver" /> <jsp:useBean id="priceobs" scope="session" class="PriceObserver" /> <% }else{ %> //request.getRequestURI()是产生本jsp的程序名,就是自己调用自己 <input type=hidden name="save" value="1"> </form> <% %>
|
执行改Jsp程序,会出现一个表单录入界面, 需要输入产品名称 产品价格, 点按Submit后,还是执行该jsp的
if (request.getParameter("save")!=null)之间的代码.
由于这里使用了数据javabeans的自动赋值概念,实际程序自动执行了setName setPrice语句.你会在服务器控制台中发现下面信息::
NameObserver :name changet to ?????(Jsp表单中输入的产品名称)
PriceObserver :price changet to ???(Jsp表单中输入的产品价格);
这说明观察者已经在行动了.!!
同时你会在执行jsp的浏览器端得到信息:
产品数据变动 保存! 并已经自动通知客户
上文由于使用jsp概念,隐含很多自动动作,现将调用观察者的Java代码写如下:
public class Test { public static void main(String args[]){ Product product=new Product(); //加入观察者 product.setName("橘子红了"); } } |
发表评论
-
Create A half transparent DIV
2013-01-22 16:49 1149今天遇到了半透明div的创建和跨浏览器的实装 下面给 ... -
backup
2013-01-05 14:20 0http://atoz-tech.blogspot.jp/20 ... -
SpringMVC wizard简单示例
2012-12-28 17:02 0public class UserController ... -
JavaScript模式化编程-字面量和构造方法
2012-12-27 18:22 1035字面量和构造方法 我不知道大家对这个有什么概念。 ... -
JavaScript模式化编程
2012-12-25 10:26 1011我不知道现在生活中的苦是不是对自己是一种好处,我也不知道 ... -
设计模式(要提高编程水平进)
2011-02-27 22:07 1231设计,是编程语 ... -
Java PatternDesign of GOF(四人帮力作,享誉15年)第十六模式
2011-02-09 08:52 1150Java PatternDesign of GOF(四人帮力作 ... -
Java PatternDesign of GOF(四人帮力作,享誉15年)第十五模式
2011-02-09 08:50 1059Java PatternDesign of GOF(四人帮力作 ... -
Java PatternDesign of GOF(四人帮力作,享誉15年)第十三模式
2011-02-09 08:47 1007Java PatternDesign of GOF(四 ... -
Java PatternDesign of GOF(四人帮力作,享誉15年)第十二模式
2011-02-02 10:15 1101Java PatternDesign of GOF(四 ... -
Java PatternDesign of GOF(四人帮力作,享誉15年)第十一模式
2011-02-02 10:08 1080Java PatternDesign of GOF(四人帮力作 ... -
Java PatternDesign of GOF(四人帮力作,享誉15年)第十模式
2011-02-02 10:05 995Java PatternDesign of GOF(四 ... -
Java PatternDesign of GOF(四人帮力作,享誉15年)第九模式
2011-02-02 10:03 1164Java PatternDesign of GOF(四 ... -
Java PatternDesign of GOF(四人帮力作,享誉15年)第八模式
2011-02-02 09:58 1053Java PatternDesign of GOF(四人帮力作 ... -
Java PatternDesign of GOF(四人帮力作,享誉15年)第七模式
2011-02-02 09:54 1138Java PatternDesign of GOF(四人帮力作 ... -
Java PatternDesign of GOF(四人帮力作,享誉15年)第六模式
2011-02-02 09:51 907Java PatternDesign of GOF(四人帮力 ... -
Java PatternDesign of GOF(四人帮力作,享誉15年)第五模式
2011-01-31 12:45 1153Java PatternDesign of GOF(四人帮力作 ... -
Java PatternDesign of GOF(四人帮力作,享誉15年)第四模式
2011-01-31 12:43 1267Java PatternDesign of GOF(四人帮力作 ... -
Java PatternDesign of GOF(四人帮力作,享誉15年)第三模式
2011-01-31 12:40 1018Java PatternDesign of GOF(四 ... -
Java PatternDesign of GOF(四人帮力作,享誉15年)第二模式
2011-01-31 12:38 1436Java PatternDesign of GOF(四人帮力作 ...
相关推荐
GOF四人组的Design Pattern中文版,设计模式。四人帮,又称Gang of Four。
"patternDesign设计模式例子源码"这个压缩包很可能是包含了一些常见设计模式的实际应用示例,如单例模式、工厂模式、观察者模式等。下面我们将深入探讨这些设计模式及其重要性。 1. **单例模式**:单例模式确保一个...
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决常见问题的经验总结和最佳实践。在这篇文章中,我们将深入探讨两种常见的设计模式:Facade(外观)模式和Simple Factory(简单工厂)模式。 首先,让...
设计模式是软件工程领域中一套被广泛认可和应用的解决问题的模板或通用解决方案。它不是直接给出代码,而是描述在特定上下文中,如何解决常见设计问题的一种方法。设计模式可以帮助开发者提高代码的可重用性、可读性...
本项目"patterndesign"显然是基于《图解设计模式》这本教材的实践代码库,旨在帮助开发者深入理解和应用设计模式。 1. **单例模式(Singleton)**:确保一个类只有一个实例,并提供全局访问点。在Java中,单例模式...
Android、供应链、财务、百度推广、XML、Test、Struts2、Struts、SQLBase、SQLA、Spring、SEO、PHP、PatternDesign、Oracle、OOAD、NNTC、Moblie、Linux、JSP、Jquery、JNTC、Javascrip{过滤}t、JavaOOP、JavaBase、...