程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> Java Q&A: 使用Observer模式(轉)

Java Q&A: 使用Observer模式(轉)

編輯:關於JSP

Java Q&A: 使用Observer模式
A:我想在自己的Java程序中使用Observer模式。基於此,能否提供某些示例代碼來演示如何去做?
Q:正如面向對象編程有助於代碼復用一樣,設計模式可以促進設計復用。確實,設計模式可以讓你復用那些正確的、成熟的設計。但近來,批評設計模式的聲音越來越多。批評者指出,缺乏經驗的開發者會很容易地掉進 "模式陷阱" 之中。
模式陷阱讓缺乏經驗的開發者迷失了方向。因而,他們在處理問題時不是去尋找可能存在的最好方案,而把最終目標集中在盡可能地實現更多的設計模式之上。在一些人看來,使用設計模式好象必然會帶來良好的設計。按照這個邏輯,只要大量使用設計模式,就必然為你產生一個優秀的設計!然而現實中,這一觀點卻導致出許多毫無意義的設計--即使這個設計采用了多個設計模式。看來很遺憾,設計模式並不能保證良好的設計。
要想在設計中正確地運用一個設計模式,必須確保三個條件:
1. 弄清你的問題
2. 了解這個模式
3. 理解這個模式如何解決你的問題
首先,最重要的是條件1。如果不能完全地弄清你要解決的問題,何談運用模式?
還要知道條件2:必須完全了解你想運用的模式。不了解它怎麼能運用它?更重要的是,連一個模式做什麼都不知道,又如何想到去用它?
最後一點,如果你不能清楚地說出模式將怎樣解決你的問題(為什麼這個模式合適),那還是放棄它。僅僅為了用模式本身而去用它,就會掉進模式陷阱之中。
我並不是在說提這個問題的讀者也一定會掉進模式陷阱。但從提問的表達上來看,它很容易誤導一些開發者去理解設計模式。我對這個提問的理解是,這位讀者應該清楚自己需要解決的問題,也了解Observer模式,他/她只是不知道如何用Java來實現。
在給出一個Java示例之前,為了有助於其他讀者也能理解,先簡要介紹一下Observer模式。
簡單來說,Observer模式讓一個對象(觀察者,Observer)去監視另一個對象(目標,Subject);它使得目標和觀察者之間建立一種 "發布--訂閱"(publish-subscribe )的關系。通過Observer模式,觀察者可以向目標登記,表明自己要從目標接收事件。目標需要向觀察者通知事件時,只是簡單地將事件發給每一個觀察者。
例如,有一個基於某種數據模型的電子表格。只要數據模型發生變化,電子表格就需要更新表格單元以及內嵌的圖表。這個例子中,目標是數據模型,觀察者是表格單元和圖表。當觀察者接收到數據模型已經變化的通知時,它們就更新自己。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved