• <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>

            積木

            No sub title

              C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
              140 Posts :: 1 Stories :: 11 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(1)

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            Mediator模式
                  該模型主要解決兩個或多個對象間的相互通信的問題。(個人認為該模式的思想同Observer模式的思想還是有點類似的。表面上看,他們所解決的問題類型根本不同,那為什么我會這么認為了?后面再說明)。按理說,各對象間的通信假如:ObjA與ObjB要進行通信。方法有好多種。比如:可以在它們內(nèi)部各存一份對方的引用。在一方變動時,調(diào)用另一方進行同步即可。但確實如果系統(tǒng)大而復(fù)雜時,這將顯示的不那么清晰。因此,就希望中間會有個調(diào)停者。Mediator模式就因此而生。此時,ObjA與ObjB內(nèi)部只存為一份Mediator(MediatorObj)對象的引用。在對象變動時,只需調(diào)用MediatorObj的相關(guān)接口,通知其他對象需要同步更新即可。因此,對ObjA或ObjB或其他的任何對象來說,它們有可能根本不知道還有其他的對象存在。(如:ObjA可能不知道ObjB的存在。)但通過MediatorObj對象,卻達到了ObjA與ObjB的同步作用。(現(xiàn)在想下,是不是與Observer模式有點類似?因為,如果在Observer模式的實現(xiàn)上,抽象出一個IObserverable來。那通過IObserverable對象,可以通知所有View的更新)。
             

            class CClassA;
            class CClassB;

            class CMediator
            {
            public:
                CMediator(){}
                CMediator(CClassA
            * pObjA, CClassB* pObjB)
                {
                    
            this->m_pObjA = pObjA;
                    
            this->m_pObjB = pObjB;
                }
                
            void DoSyncFromAToB(void)
                {
                    
            this->m_pObjB->xxx
                }
                
            void DoSyncFromBToA(void)
                {
                    
            this->m_pObjA->xxx
                }
            private:
                CClassA
            * m_pObjA;
                CClassB
            * m_pObjB;
            };

            class CClassA
            {
            public:
                CClassA(){}
                CClassA(CMediator
            * pMediator)
                {
                    
            this->m_pMediator = pMediator;
                }
                
            void DoAction(void)
                {
                    
            // do some work here
                    
                    
            // 通知其他對象,需要同步
                    this->m_pMediator->DoSyncFromAToB();
                }

            private:
                CMediator
            * m_pMediator;
            };

            class CClassB
            {
            public:
                CClassB(){}
                CClassB(CMediator
            * pMediator)
                {
                    
            this->m_pMediator = pMediator;
                }
                
            void DoAction(void)
                {
                    
            // do some work here
                    
                    
            // 通知其他對象,需要同步
                    this->m_pMediator->DoSyncFromBToA();
                }

            private:
                CMediator
            * m_pMediator;
            };
            posted on 2011-06-28 10:26 Jacc.Kim 閱讀(1018) 評論(0)  編輯 收藏 引用 所屬分類: 設(shè)計模式
            久久精品成人免费国产片小草| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 欧美日韩精品久久免费| 久久久久人妻一区二区三区| 久久精品中文无码资源站| 久久93精品国产91久久综合| 丁香色欲久久久久久综合网| 国产激情久久久久影院老熟女免费| 日产久久强奸免费的看| 国内精品久久久久久野外| 亚洲国产成人乱码精品女人久久久不卡 | 免费国产99久久久香蕉| 色妞色综合久久夜夜| 91精品国产91热久久久久福利| 亚洲国产日韩欧美久久| 99久久www免费人成精品| 日本久久久久亚洲中字幕 | 日韩久久久久久中文人妻| 久久不见久久见免费影院www日本| 久久天堂AV综合合色蜜桃网| 久久嫩草影院免费看夜色| 国产精品久久久久9999高清| 久久国产精品久久| 天天爽天天狠久久久综合麻豆| 日日狠狠久久偷偷色综合免费 | 久久久久人妻一区精品果冻| 99久久精品国产高清一区二区| 天天躁日日躁狠狠久久| 国产成人精品久久| 少妇无套内谢久久久久| 久久久无码精品亚洲日韩蜜臀浪潮 | 久久亚洲sm情趣捆绑调教| 久久久国产精华液| 久久综合视频网站| 狠狠色丁香久久婷婷综合蜜芽五月| 久久99亚洲综合精品首页| 成人亚洲欧美久久久久| 久久97久久97精品免视看| 手机看片久久高清国产日韩| 日本久久中文字幕| 国色天香久久久久久久小说|