離弦之Ray

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            55 Posts :: 0 Stories :: 33 Comments :: 0 Trackbacks
           

                 這是Head First Design Pattern里面介紹的第二個Pattern,叫做Observer Pattern,其核心概念就是一種一對多的關(guān)系。

          其中的“一”,類似于定報紙系統(tǒng)的發(fā)送方,而“多”就是訂閱方。當(dāng)有新的“報紙”時,發(fā)送方將最新的報紙送達(dá)訂閱方手中。發(fā)送方維護(hù)著一個訂閱方的列表。

          文中通過一個氣象站的例子來解說這個模式。WeatherData實現(xiàn)Subject接口,里面包括所要傳送的private 數(shù)據(jù),還有注冊Observer和去除Observer的方法。當(dāng)數(shù)據(jù)有所更新時調(diào)用measurementChanged方法,這個方法再調(diào)用notifyObservers方法。

          而在Observer那端,有一個subject對象的私有數(shù)據(jù),通過構(gòu)造函數(shù)將要注冊的Subject作為參數(shù)來對它進(jìn)行初始化,以此建立ObserverSubject的聯(lián)系。

          最后還介紹了java那建的Observer模式。通過繼承Observable來成為Subject,通過實現(xiàn)Observer接口來成為Observer。但其有一定弊病,因為java不支持多繼承,這就限制了使用這個模式的靈活性。所以我覺得以后如果真的用到Observer模式還是自己編程比較好。

          posted on 2007-09-06 13:26 離弦之ray的技術(shù)天空 閱讀(187) 評論(0)  編輯  收藏 所屬分類: Design Pattern
          主站蜘蛛池模板: 安岳县| 泉州市| 安陆市| 香港| 滕州市| 新干县| 乐山市| 社会| 凤山市| 阳朔县| 屏边| 岳西县| 邵阳县| 浠水县| 遵义市| 沾益县| 利川市| 林州市| 灌阳县| 上饶市| 津南区| 临漳县| 桂林市| 凤阳县| 玉屏| 平度市| 长子县| 潮州市| 荆门市| 四子王旗| 怀安县| 兴业县| 西吉县| 孟州市| 息烽县| 荔波县| 札达县| 新竹县| 阳原县| 海兴县| 克东县|