• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            08年05月19日

            Posted on 2008-05-19 16:26 RichardHe 閱讀(957) 評論(0)  編輯 收藏 引用
            監聽器的注冊與使用,也就是設計模式中的觀察模式(observer),一對多關系
            update的參數應該是subject,可以這樣認為,如果把subject當作老師,observer當作學生的
            話,那就比較容易明白了,update(subject* sub),也就是老師的狀態發生改變時,學生也要
            發生改變,并且發的變化是由老師這個參數來決定;既對老師進行監聽..偽代碼如下:
             1 class Student;
             2 class Teacher
             3 {
             4    public:
             5         Teacher(){}
             6         ~Teacher(){}
             7         //把學生注冊到老師中.
             8         void attach(Student* stu){stlist.push_back(stu);}
             9         void detach(Student* std);{//不用的對象刪除}
            10         STATE getSate();
            11         //對每個學生通知
            12         void notify(){
            13         std::list<Student*>::iterator it=m_stlist.begin();
            14          for(it;it <=m_stlist.end(); ++it)
            15         {   (*it)->update(this);
            16          }
            17    private:
            18        typedef std::list<Student*> StudentList;
            19        StudentList m_stlist;
            20 };
            21 
            22 class Student
            23 {
            24   public:
            25   Student();
            26 ~Student();
            27  void update(Teacher* teach){teach->getState();//根據老師的狀態來決定所要做的事.}
            28 };


            朋友們的討論:

            unix_koria--捐款救災義不容辭! 說:
            因為 stu的update是由老師觸發
            unix_koria--捐款救災義不容辭! 說:
            實際的工程中,一般都需要知道是哪個具體對象觸發這種事件
            kun123456765 說:
            但是我覺得在這里不是必須的
            unix_koria--捐款救災義不容辭! 說:
            update實際就是個事件而已,給teacher參數,那么可以在stu和tea之間建立聯系啊。
            kun123456765說:
            我認為 可以根據實際情況來 決定 子對象 是否 需要知道 什么是父對象
            unix_koria--捐款救災義不容辭! 說:
            但大部分都是需要的。
            Richard He 說:
            還有其它的優點嗎?
            kun123456765 說:
            恩,在Student中 保存一個Teacher*
            unix_koria--捐款救災義不容辭! 說:
            還會有回調要求的。
            kun123456765 說:
            在構造的時候就傳遞
            new stu (this)
            unix_koria--捐款救災義不容辭! 說:
            即update里 很多時候需要通知 宿主
            unix_koria--捐款救災義不容辭! 說:
            在構造的時候就傳遞
            new stu (this)

            這樣就限制太死了。
            unix_koria--捐款救災義不容辭! 說:
            學生就是學生.
            kun123456765 說:
            也可以換個別的方式。
            但是我還是認為 不是必須,而是根據需求來的。
            觀察者模式的重點應該在通知機制
            unix_koria--捐款救災義不容辭! 說:
            ..............
            unix_koria--捐款救災義不容辭! 說:
            如果不傳進個老師,有什么優點?
            kun123456765說:
            不知道。
            unix_koria--捐款救災義不容辭! 說:
            設計模式 說的是 大部分通常的做法.....
            unix_koria--捐款救災義不容辭! 說:
            沒說一定要那樣,哈哈,你覺得不爽那就不用噶。...
            unix_koria--捐款救災義不容辭! 說:
            但傳了teacher指針,則可以兼容更多情況。
            kun123456765 說:
            這點我承認。
            unix_koria--捐款救災義不容辭! 說:
            因為指針可以為NULL
            unix_koria--捐款救災義不容辭! 說:
            承認就行了,沒必要在這個點上扣問題了吧.

            posts - 94, comments - 138, trackbacks - 0, articles - 94

            Copyright © RichardHe

            国产精品久久久久久久久久影院| 久久综合丝袜日本网| 国产免费久久精品丫丫| 久久精品中文字幕第23页| 亚洲国产日韩欧美综合久久| 久久人人爽人人爽人人片AV不 | 无码精品久久久久久人妻中字| 一本大道久久a久久精品综合 | 色8久久人人97超碰香蕉987| 久久精品国产亚洲欧美| 久久亚洲精品国产亚洲老地址| 久久99久久99小草精品免视看| 久久露脸国产精品| 91精品国产综合久久四虎久久无码一级 | 亚洲精品国产综合久久一线| 嫩草影院久久国产精品| 久久国产劲爆AV内射—百度| 一本色道久久88综合日韩精品 | 国产韩国精品一区二区三区久久 | 老司机国内精品久久久久| 国产精品99久久久精品无码| 日韩久久无码免费毛片软件| 久久久无码精品午夜| 国产精品久久久久久福利69堂| 狠狠色综合网站久久久久久久高清| 成人亚洲欧美久久久久| 久久综合丁香激情久久| 久久久久久午夜成人影院| 国产91色综合久久免费| 欧洲精品久久久av无码电影| 国产欧美久久久精品影院| 久久综合亚洲色HEZYO国产| 99久久99久久精品国产片| 国产成人精品久久综合| 亚洲乱亚洲乱淫久久| 久久精品国产99久久丝袜| 久久精品夜色噜噜亚洲A∨| 久久久久久亚洲精品不卡 | 国产精品免费福利久久| 久久精品视频网| 久久99国产精品一区二区|