城市獵人

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

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

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

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

          2、實用性

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

          3、設計原則

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

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

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


          主站蜘蛛池模板: 温州市| 新宁县| 尼木县| 新泰市| 互助| 神农架林区| 马山县| 陇西县| 平顶山市| 雷波县| 图木舒克市| 兴国县| 宁都县| 湖北省| 宝应县| 南安市| 珲春市| 莱州市| 抚松县| 博乐市| 惠州市| 齐齐哈尔市| 台南市| 东安县| 山阴县| 贡嘎县| 永泰县| 平远县| 永清县| 无为县| 白玉县| 固镇县| 平乐县| 景洪市| 安图县| 永济市| 乌兰察布市| 重庆市| 安西县| 板桥市| 察隅县|