<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      川山甲

      追求內心的非常平靜!瞬間清空所有的雜念,達到物我兩忘!

        博客園  :: 首頁  ::  :: 聯系 :: 訂閱 訂閱  :: 管理
      介紹
           現在有兩派,有的人建議使用設計模式,有的人不建議使用設計模式!
      這就向寫文章一樣,有的人喜歡文章按照套路走,比如敘事性質的文章,時間,地點,人物,事件。而有的人喜歡寫雜文或者散文,有的人喜歡寫詩詞!

      現在寫代碼很多地方類似于寫文章,但是在有些地方比寫文章需要更多的技能!寫文章寫多了一般也能寫出優秀的文章,而代碼也一樣,寫多了也能寫出很多有些的代碼!

      很多時候,我看設計模式的時候,有些設計模式只是吻合我的代碼習慣。但是你硬去套它,那么反而適得其反。——很多時候是學會了招式,在應用中不知不覺的使用上這些招式,才能掌握其道,但是也不要拘泥于招式,正所謂“無招勝有招”嗎?
       
      我學設計模式的初衷,就是知道有這么個玩意兒?腦子里有這么個印象,也不會生套它!如果設計模式不符合你的習慣對你閱讀代碼反而是不利的!
       
      觀察者模式定義對象的一對多依賴,這樣一來,當一個對象改變狀態時,它的所有依賴者都會收到通知并自動更新!
       
      設計原則
       
      在觀察者模式中,會改變的是主題的狀態以及觀察者的數目。用這個模式,你可以改變依賴于主題狀態的對象,卻不必改變主題。——找出程序中會變化的方面,然后將其和固定不變的方面相分離!
       
       主題和觀察者都使用接口:觀察者利用主題的接口向主題注冊,而主題利用觀察者接口通知觀察者。這樣可以讓兩者之間運作正常,又同時具有松耦合的優點! ——針對接口編程,不針對實現編程!
       觀察者模式利用“組合”將許多觀察者組合進主題中。對象(觀察者——主題)之間的這種關系不是通過繼承產生的,而是在運行時利用組合的方式產生的。 ——多用組合,少用繼承!
       
      代碼
       
      <?php
      /**
       * 觀察者模式
       * @author: Mac
       * @date: 2012/02/22
       */
      
      
      class Paper{ /* 主題    */
          private $_observers = array();
      
          public function register($sub){ /*  注冊觀察者 */
              $this->_observers[] = $sub;
          }
      
          
          public function trigger(){  /*  外部統一訪問    */
              if(!empty($this->_observers)){
                  foreach($this->_observers as $observer){
                      $observer->update();
                  }
              }
          }
      }
      
      /**
       * 觀察者要實現的接口
       */
      interface Observerable{
          public function update();
      }
      
      class Subscriber implements Observerable{
          public function update(){
              echo "Callback\n";
          }
      }
      

       

      下面是測試代碼

      /*  測試    */
      $paper = new Paper();
      $paper->register(new Subscriber());
      //$paper->register(new Subscriber1());
      //$paper->register(new Subscriber2());
      $paper->trigger();
      

       

      總結
             
       當新對象要填入的時候,只需要在主題(又叫可觀察者)中進行注冊(注冊方式很多,你也可以在構造的時候,或者框架訪問的接口中進行注冊),然后實現代碼直接在新對象的接口中進行。這降低了主題對象和觀察者對象的耦合度。
       
      好的設計模式不會直接進入你的代碼中,而是進入你的大腦中。
       
      參考:Head First 設計模式

       

      posted on 2012-02-22 12:14  川山甲  閱讀(22287)  評論(5)    收藏  舉報
      主站蜘蛛池模板: 亚洲一区二区三区啪啪| 国产欧美日韩高清在线不卡| 国产午夜精品理论片久久影院| 亚洲国产午夜精品福利| 成年无码av片在线蜜芽| 人妻系列无码专区免费 | 女人色熟女乱| 中超| 久久久精品2019中文字幕之3| av无码精品一区二区三区宅噜噜| 亚洲国产一成人久久精品| 九九综合九色综合网站| 自拍偷拍一区二区三区四| 国产精成人品日日拍夜夜| 国产成人最新三级在线视频| 亚洲日韩欧美一区二区三区在线| 国产激情视频在线观看首页| 国产av综合色高清自拍| 成人免费区一区二区三区| 亚洲熟妇色自偷自拍另类| 最新国产AV最新国产在钱| 熟妇激情一区二区三区| 成人福利一区二区视频在线| 四虎精品国产永久在线观看| 亚洲一区二区三区人妻天堂 | 国产精品综合一区二区三区 | 高潮毛片无遮挡高清视频播放 | 福利一区二区在线观看| 成人国产精品中文字幕| 亚洲精品久久婷婷丁香51| 国产精品一区二区性色av| 久热这里只精品99国产6-99RE视…| 亚洲最大国产成人综合网站| 1区2区3区高清视频| 自拍偷自拍亚洲精品熟妇人| 国产乱啊有帅gv小太正| 女人被狂躁到高潮视频免费软件| 欧美成人精品| 制服jk白丝h无内视频网站| 韩国精品福利视频一区二区| 人妻少妇精品系列一区二区|