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

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            設(shè)計模式學習總結(jié)之六

            八:Composite模式(即:復合模式)

             復合模式旨在將遞歸處理,轉(zhuǎn)化為一種順序處理。明顯地,遞歸處理,相對較耗資源。也相對較為抽象些。而用一個Composite類對象來轉(zhuǎn)化處理
            遞歸處理。將顯得直觀些。它與Decorator模式的區(qū)別是:Composite模式,旨在構(gòu)造一個類。這個類,將原本是遞歸組織的樹狀結(jié)構(gòu),轉(zhuǎn)換為直觀地轉(zhuǎn)化為
            順序結(jié)構(gòu)。即:它重要于轉(zhuǎn)化表現(xiàn)。而Decorator模式(即:修飾模式),其重要簡化管理原本系統(tǒng)類體系結(jié)構(gòu)。不至于將類繼承體系越來越深。同時,不
            至于讓原本設(shè)計好的類,越來越復雜化。同時又可以為原本類體系添加新的功能(即:書上所述的新的職責)。

             下面簡要看下該模式的代碼結(jié)構(gòu):

            class ClassNode
            {
            public:
             //寫下構(gòu)造函數(shù)等
             ...
            public:
             virtual void Operation(void);
             virtual void Add(ClassNode* pNode);
             virtual void Remove(ClassNode* pNode);
             virtual ClassNode* GetNode(int iIndex);
            }

            //Composite類
            class Composite : public ClassNode
            {
            public:
             typedef vector<ClassNode* > NODELISTVEC;
            public:
             void Operation(void)
             {
              for (NODELISTVEC::iterator iter = m_vNodeList.begin(); iter != m_vNodeList.end(); iter++)
               iter->Operation();
             }
             void Add(ClassNode* pNode){//do something...}
             void Remove(ClassNode* pNode){//do something...}
             ClassNode* GetNode(int iIndex){//do something...}
            private:
             NODELISTVEC m_vNodeList;
            }

            //調(diào)用
            int main(int argc, char* argv[])
            {
             Composite* MyCompositeForNodes = new ...;
             ClassNode* xxx = new ...;//創(chuàng)建節(jié)點。當然這里只是為了演示,所以只創(chuàng)建一個節(jié)點。一棵樹有可能有N個節(jié)點。
             MyCom,positeForNodes.Add(xxx );
             ...
             MyCompositeForNodes.Operation();
            }

            //個人認為,該模式,很怪啊。。因為通過這樣轉(zhuǎn)換后,原本的父子關(guān)系就被破壞掉了。
            //如果有大俠理解的深的話,,還請不吝補充下。。不盛感激。

            posted on 2011-05-18 00:46 Jacc.Kim 閱讀(250) 評論(0)  編輯 收藏 引用 所屬分類: 設(shè)計模式
            伊人色综合久久天天网| 国产精品欧美亚洲韩国日本久久| 久久精品国产色蜜蜜麻豆| 国产精品嫩草影院久久| 色狠狠久久综合网| 久久精品亚洲日本波多野结衣 | 久久久久亚洲精品天堂久久久久久 | 一本色道久久88精品综合 | 国产精品美女久久久网AV| 尹人香蕉久久99天天拍| 国产美女久久精品香蕉69| 久久久91人妻无码精品蜜桃HD| 麻豆精品久久久久久久99蜜桃| 久久99国产亚洲高清观看首页| 久久久无码精品午夜| 亚洲国产精品婷婷久久| 狠狠色婷婷久久综合频道日韩| 国产福利电影一区二区三区,免费久久久久久久精 | 77777亚洲午夜久久多人| 日本久久久久久中文字幕| 亚洲日本va中文字幕久久| 国产精品成人99久久久久| 久久精品国产亚洲av水果派 | 日韩美女18网站久久精品| 国产免费久久精品99re丫y| 66精品综合久久久久久久| 久久棈精品久久久久久噜噜| 久久无码精品一区二区三区| 精品国产VA久久久久久久冰| 久久精品国产亚洲AV蜜臀色欲| 热综合一本伊人久久精品 | 色综合久久中文字幕综合网| 9999国产精品欧美久久久久久| 精品国际久久久久999波多野| 亚洲成色WWW久久网站| 色青青草原桃花久久综合| 亚洲国产小视频精品久久久三级| 久久精品国产亚洲AV不卡| 精品视频久久久久| 久久久久久久综合日本| 国产AⅤ精品一区二区三区久久 |