posts - 297,  comments - 1618,  trackbacks - 0
               觀察者模式(Observer) 屬于對象的行為模式
          1. 定義
               定義對象間的一種一對多的關系,當一個對象的狀態發生改變時,所有依賴它的對象都得到通知,并被自動更新。
          2. 使用的原因
                
          在應用程序開發過程中,往往都要求用戶界面和業務邏輯分離,劃定清晰的界限.因為應用程序要求能快速的更改用戶界面并且不能對應用程序其他部分產生連帶影響,而且業務邏輯也會發生變化并要求這一切變化與用戶界面無關.觀察者(observer)就是解決此問題最常用的設計模式,它非常有助于在系統中各個對象之間劃分清晰的界限。
               觀察者模式在界面設計中應用廣泛。
               還有一種常見的情況,一個軟件系統常常要求在某一個對象發生變化的時候,某些其它的對象做出相應的改變,而觀察者模式是解決這個問題的一個低耦合度的設計方案,它能夠減少對象之間的耦合以便更加利于系統的復用。
          3. 適用的情況舉例
              eg1.  
          4. 類圖結構及說明
            1)示意性類圖如下所示:
            
            2)類說明
               i)抽象主題Subject:用于將所有的對象引用保存在一個聚集中(比如Vector對象)里,每個Subject可以有任何數量的觀察者。它又被叫做抽象觀察者(Observable)角色,一般使用抽象類或接口實現。
               ii)抽象觀察者Observer:為所有的具體觀察者定義一個接口,在得到Subject的通知時更新自己。
               iii)具體主題ConcreteSubject:將有關狀態存入具體觀察者對象。在具體主題的內部狀態改變時,給所有登記過的觀察者發出通知。又被稱為具體被觀察者角色。
               iv)具體觀察者ConcreteObserver:實現了抽象觀察者Observer,在被觀察者發出通知時,將自行執行update方法更新。

          5. 使用舉例
                待續。
          6. 參考文章
              1)《Pattens In Java》
              2)《Java與模式》
              3)http://i.cn.yahoo.com/whj1234586/blog/p_34/
              4)http://www.999qc.cn/Article/NET/15500/
          posted on 2008-05-14 07:56 阿蜜果 閱讀(4837) 評論(4)  編輯  收藏 所屬分類: Design Pattern


          FeedBack:
          # re: 設計模式學習筆記--觀察者模式(Observer) (未完待續)
          2008-05-14 13:53 | 迷失的風
          這個方法我見過,是在jzkit工具包里面有,像這個
          Observer fragment_count_observer = new Observer() {
          public void update(Observable o, Object arg) {
          IREvent e = (IREvent) arg;

          if (e.event_type == IREvent.SOURCE_RESET) {
          System.err
          .println("TIME: Sub Fragment source reset");
          } else if (e.event_type == IREvent.FRAGMENT_COUNT_CHANGE) {
          System.err
          .println("TIME: Number of fragments has changed to "
          + e.event_info);

          }
          }
          };

          看的不是太明白,用起來迷糊。  回復  更多評論
            
          # re: 設計模式學習筆記--觀察者模式(Observer) (未完待續)
          2008-05-16 15:22 | 網上買書
          的確觀察者模式在界面設計中應用廣泛。  回復  更多評論
            
          # re: 設計模式學習筆記--觀察者模式(Observer) (未完待續)[未登錄]
          2008-11-26 19:40 | Lanny
          最近我也在學習Observer模式,不過仍未在實際項目應用上:)  回復  更多評論
            
          # re: 設計模式學習筆記--觀察者模式(Observer) (未完待續)[未登錄]
          2009-09-21 19:43 | 隨意
          這樣子說那使用delegate是不是一種簡單的觀察者模式呢?  回復  更多評論
            
          <2008年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

                生活將我們磨圓,是為了讓我們滾得更遠——“圓”來如此。
                我的作品:
                玩轉Axure RP  (2015年12月出版)
                

                Power Designer系統分析與建模實戰  (2015年7月出版)
                
               Struts2+Hibernate3+Spring2   (2010年5月出版)
               

          留言簿(263)

          隨筆分類

          隨筆檔案

          文章分類

          相冊

          關注blog

          積分與排名

          • 積分 - 2296321
          • 排名 - 3

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 潜山县| 平泉县| 凤凰县| 凤翔县| 凯里市| 崇明县| 即墨市| 合川市| 木兰县| 高淳县| 清徐县| 汽车| 买车| 柳林县| 新巴尔虎右旗| 南充市| 郓城县| 晋中市| 曲松县| 临澧县| 武义县| 安多县| 兰溪市| 昌黎县| 内乡县| 天祝| 叙永县| 静乐县| 秭归县| 元江| 平昌县| 陇南市| 泰顺县| 武陟县| 沙雅县| 石景山区| 肥东县| 晴隆县| 洛扎县| 会东县| 太白县|