• <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++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              140 Posts :: 1 Stories :: 11 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(1)

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            設計模式學習總結之六

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

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

             下面簡要看下該模式的代碼結構:

            class ClassNode
            {
            public:
             //寫下構造函數等
             ...
            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;
            }

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

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

            posted on 2011-05-18 00:46 Jacc.Kim 閱讀(251) 評論(0)  編輯 收藏 引用 所屬分類: 設計模式
            国产精品永久久久久久久久久 | 狠狠色丁香久久婷婷综合蜜芽五月 | 久久精品欧美日韩精品| 91久久精品无码一区二区毛片| 国产精品成人久久久| 久久综合给合久久狠狠狠97色 | 久久精品国产亚洲Aⅴ蜜臀色欲| 久久人人添人人爽添人人片牛牛 | 久久久久久久波多野结衣高潮| 久久久噜噜噜www成人网| 麻豆精品久久精品色综合| 久久久精品人妻一区二区三区四| 国产免费福利体检区久久| 人妻少妇久久中文字幕| 亚洲伊人久久综合中文成人网| 国内精品久久久久影院网站 | 久久久久九九精品影院| 久久精品夜夜夜夜夜久久| 久久婷婷色综合一区二区| 久久久久国产日韩精品网站| 奇米综合四色77777久久| 免费精品国产日韩热久久| 午夜福利91久久福利| 国产精品一区二区久久精品涩爱 | 麻豆成人久久精品二区三区免费| 国产精品xxxx国产喷水亚洲国产精品无码久久一区| 香蕉久久夜色精品国产2020 | 久久精品a亚洲国产v高清不卡| 亚洲第一永久AV网站久久精品男人的天堂AV | 理论片午午伦夜理片久久| 国产叼嘿久久精品久久| 久久精品九九亚洲精品天堂| 国产精品丝袜久久久久久不卡| 久久婷婷五月综合色高清| 色偷偷88888欧美精品久久久| 久久这里只有精品首页| 香蕉久久夜色精品国产尤物| 国产成人综合久久精品红| 久久无码国产专区精品| 久久免费看黄a级毛片| 国内精品人妻无码久久久影院导航|