城市獵人

          在一網(wǎng)情深的日子里,誰能說得清是苦是甜,只知道確定了就義無反顧
          posts - 1, comments - 7, trackbacks - 0, articles - 89

          模式(二):觀察者(Observer)模式

          Posted on 2008-07-19 14:58 sailor 閱讀(132) 評論(0)  編輯  收藏 所屬分類: 模式
          1、定義

              在對象之間定義一對多的依賴,這樣一來,當一個對象改變時狀態(tài),依賴他的對象會收到通知,并自動更新。這種模式以松耦合方式在一些列對象之間改變狀態(tài)。MVC模式就是觀察者模式的一個代表。

          2、實用性

              當一個抽象模型有兩個方面, 其中一個方面依賴于另一方面。將這二者封裝在獨立的對象中以使它們可以各自獨立地改變和復(fù)用。 
              當對一個對象的改變需要同時改變其它對象, 而不知道具體有多少對象有待改變。
              當一個對象必須通知其它對象,而它又不能假定其它對象是誰。換言之, 你不希望這些對象是緊密耦合的。
           

          3、設(shè)計原則

              找出程序中會變化的方面,然后將其和固定不變的方面相分離
                  在觀察者模式中,會改變的是主題的狀態(tài),以及觀察者的數(shù)目和類型。用這個模式,你可以依賴于主題狀態(tài)的對象,卻不必改變主題。這就叫提前規(guī)劃。

              針對接口編程,不針對實現(xiàn)編程
                  主題與觀察者都使用接口:觀察者利用主題的接口,向主題注冊;而主題利用觀察者的接口通知接口。這樣可以讓兩者之間運作正常,又同事具有松耦合的優(yōu)點。

              多用組合,少用繼承
                  觀察者模式利用“組合”,將許多觀察者組合進主題中。對象之間的這種關(guān)系不是通過繼承產(chǎn)生的,而是在運行時利用組合的方式而產(chǎn)生的。
           
          4、實現(xiàn)
             


          主站蜘蛛池模板: 昌吉市| 隆昌县| 达拉特旗| 鄯善县| 于田县| 蒲江县| 太湖县| 利津县| 永春县| 碌曲县| 伊宁县| 鄂托克前旗| 和田县| 广德县| 南充市| 元阳县| 酉阳| 平和县| 浦江县| 石城县| 大安市| 克东县| 阿拉善右旗| 东辽县| 双鸭山市| 阳原县| 北辰区| 富平县| 宁明县| 文山县| 甘肃省| 海丰县| 栾川县| 二连浩特市| 罗江县| 绍兴县| 云南省| 庆元县| 沅陵县| 凤翔县| 黄骅市|