- 浏览: 301588 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
tacyuuhon:
这个代码就有问题。当前的 int activeSessions ...
HttpSessionListener统计在线人数 -
yangleilt:
唉。。能通俗的说一下不?你说的这些百科上到处都是的!
LDAP是什么? -
hezhou_0521:
你显示正确了吗?
HttpSessionListener统计在线人数 -
sevk:
我喜欢用vim或gvim,比Ultra Edit 顺手
让Ultra Edit和Keil结合的更紧密
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呼叫 該類別主要執行産品資料庫插入 更新 private String name; public String getName(){ return name;} } public float getPrice(){ return price;} } } |
我們注意到,在product類別中 的setXXX方法中,我們設置了 notify(通知)方法, 當Jsp表單呼叫setXXX(如何呼叫見我的另外一篇文章),實際上就觸發了notisfyObservers方法,這將通知相應觀察者應該採取行動了。
下面看看這些觀察者的代碼,他們究竟採取了什麽行動:
//觀察者NameObserver主要用來對産品名稱(name)進行觀察的 public class NameObserver implements Observer{ 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:setProperty name="product" property="*" /> <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("橘子紅了"); } }
|
你會在發現下面資訊::
NameObserver :name changet to 橘子紅了
PriceObserver :price changet to 9.22
這說明觀察者在行動了.!!
发表评论
-
第四篇:设计模式与Struts介绍篇
2004-06-24 07:02 713严重警告:只关心程序的人请跳过<o:p></ ... -
设计模式之Factory
2004-06-24 19:47 587定义:提供创建对象的接口. 为何使用?工厂模式是我们最常用的模 ... -
設計模式之Prototype(原型)
2004-06-24 19:48 637定義:用原型實例指定創建物件的種類,並且通過拷貝這些原型創建新 ... -
设计模式之Singleton(单态)
2004-06-24 19:49 293定义:Singleton模式主要作用是保证在Java应用程序中 ... -
設計模式之Builder
2004-06-24 19:49 577Builder模式定義:將一個 ... -
設計模式之Facade(外觀)
2004-06-24 19:50 493Facade的定義: 爲子系統中的一組介面提供一個一致的介面。 ... -
設計模式之Proxy(代理)
2004-06-24 19:51 732理解並使用設計模式,能夠培養我們良好的面向物件編程習慣,同時在 ... -
設計模式之Adapter(適配器)
2004-06-24 19:52 586定義:將兩個不相容的類別糾合在一起使用,屬於結構型模式,需要有 ... -
設計模式之Composite(組合)
2004-06-24 19:53 562Composite定義:將物件以樹 ... -
設計模式之Decorator(油漆工)
2004-06-24 19:54 652Decorator常被翻譯成"裝飾",我覺 ... -
設計模式之Bridge
2004-06-24 19:55 566Bridge定義 :將抽象和行為劃分開來,各自獨立,但能動態的 ... -
設計模式之Template
2004-06-24 19:57 547Template定義:定義一個操作中演算法的骨架,將一些步驟的 ... -
設計模式之Flyweight(享元)
2004-06-24 19:57 574Flyweight定義:避免大量擁有相同內容的小類別的開銷(如 ... -
設計模式之Memento(備忘機制)
2004-06-24 19:58 568Memento定義:memento是一個保存另外一個物件內部狀 ... -
設計模式之Command
2004-06-24 20:07 592Command模式是最讓我疑惑的一個模式,我在閱讀了很多代碼後 ... -
設計模式之Chain of Responsibility(職責鏈)
2004-06-24 20:07 593Chain of Responsibility定義Ch ... -
設計模式之State
2004-06-24 20:09 653State的定義: 不同的狀態,不同的行爲;或者說,每個狀態有 ... -
設計模式之Strategy(策略)
2004-06-24 20:10 548Strategy是屬於設計模式 ... -
設計模式之Mediator(仲介者)
2004-06-24 20:12 571Mediator定義:用一個仲介物件來封裝一系列關於物件交互行 ... -
設計模式之Visitor
2004-06-24 20:13 602Visitor定義作用於某個物件群中各個物件的操作。 它可以使 ...
相关推荐
《设计模式之Observer》 设计模式是软件工程中的一种最佳实践,它们是在特定场景下解决常见问题的经验总结。Observer模式,又称为“观察者模式”或“发布-订阅模式”,是一种行为设计模式,用于在对象之间建立一种...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动编程或者...
Observer模式,也称为发布-订阅(Publish/Subscribe)模式,是一种行为设计模式,它允许对象在状态发生改变时通知其他对象,而无需显示地指定这些对象。在Java中,Observer模式通过`java.util.Observable`和`java....
Observer(观察者)模式是设计模式中的一种,常用于实现对象之间的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在这个场景中,我们将讨论如何在Java中应用Observer模式,特别...
设计模式之Observer 设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计模式之Interpreter(解释器) 设计模式之Visitor
1、爪哇语言结构性模式之变压器模式介绍 2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立性模式介绍 4、单态创立性模式介绍 5、单态创立性模式介绍 6、观察者模式介绍7、责任链模式 8、设计模式之Observer 9、...
设计模式之Observer 设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计模式之Interpreter(解释器) 设计模式之Visitor
Observer设计模式,也被称为“发布-订阅”(Publish-Subscribe)模式或“依赖倒置”模式,是软件设计中的一种行为模式。它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到...
本文实例讲述了C#设计模式之Observer观察者模式解决牛顿童鞋成绩问题。分享给大家供大家参考,具体如下: 一.理论定义 观察者模式 描述了 一种 一对多的关系。 当某一对象的状态发生改变时,其他对象会得到 改变的...
设计模式之 Observer(观察者) 介绍如何使用 Java API 提供的现成 Observer 设计模式之 Iterator(迭代器) 这个模式已经被整合入Java的Collection.在大多数场合下无需自己制造一个Iterator,只要将对象装入...
观察者模式(Observer)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式在C++中广泛应用,特别是在需要...
观察者模式,也被称为发布-订阅模式或事件驱动模式,是软件设计模式中的一种行为模式。这个模式的主要目的是在对象之间建立一种松散耦合的关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并...
观察者模式(Observer)是软件设计模式中的一种行为模式,其主要目的是在对象之间建立一种松散耦合的关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式广泛应用于事件驱动...
观察者模式(Observer Pattern)是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式在软件开发中广泛应用于事件驱动...
### 从Java类库看设计模式之Observer模式详解 #### 一、引言 在软件开发过程中,常常遇到需要在不同对象之间建立依赖关系的情况,其中一个对象的状态变化会影响到另一个对象的行为。这种需求可以用设计模式中的...
**C#面向对象设计模式纵横谈(19)**:**观察者模式**(Observer Pattern)是行为型模式的一种,它在软件工程中扮演着至关重要的角色。观察者模式是一种设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态...
观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。在Java和C++等面向对象编程语言中,这种模式广泛用于事件处理和实时系统,...
在这个“设计模式之美”的学习笔记中,我们将探讨一些主要的设计模式,以及它们在实际开发中的应用。 首先,我们从创建型模式开始。这类模式主要用于对象的创建,如单例模式(Singleton)、工厂模式(Factory ...
本篇文章将深入探讨“Observer”观察者模式,这是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 观察者模式的核心概念是主题...