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

            CG@CPPBLOG

            /*=========================================*/
            隨筆 - 76, 文章 - 39, 評論 - 137, 引用 - 0
            數據加載中……

            《C++設計新思維》讀書筆記(16)


            3. Typelists

            Typelists是一個用來操作一大群型別的C++工具。就像lists對數值提供各種基本操作一樣,typelists對型別也提供相同操作。

            有些設計模式具體指定并操作一群型別,其中也許有繼承關系(但也許沒有)。顯著的例子是abstract factory和visitor。如果以傳統編程技術來操作一大群型別,將是全然的重復工作。如此重復會導致隱微的代碼膨脹。多數人不會想到其實它可以比現在更好。Typelists帶給你一種能力,可以將經常性的宏工作自動化。Typelists將來自外星球的強大威力帶到C++中,讓它得以支持新而有趣的一些手法。

            3.1 Typelists的必要性

            有時候你必須針對某些型別重復撰寫相同代碼,而templates無法幫上忙。假如有一個abstract factory,像這樣:

            1 class WidgetFactory
            2 {
            3 public:
            4     virtual Window* CreateWindow() = 0;
            5     virtual Button* CreateButton() = 0;
            6     virtual ScrollBar* CreateScrollBar() = 0;
            7 };


            如果你想將Abstract Factory概念泛化,不只生成Window、Button、ScrollBar,而是任意型別。怎么辦?

            如果你不試圖泛化基本概念,就不太有機會泛化這些概念的具象實體。雖然抽象基類很簡單,但是你會陷入無窮無盡的派生類生成器中。

            我們希望能夠這樣去使用一個abstract factory:
            1 
            2 template <class T>
            3 T* MakeRedWidget(WidgetFactory& factory)
            4 {
            5     T* pW = factory.Create<T>();
            6     pW -> SetColor(RED);
            7     return pW;
            8 }


            實際這是不可能的,如果Create不是虛函數,那么你就陷入了長長的Switch...case...之中,如果它是虛函數,那么虛函數不能是模板。
            Typelists將使Abstract Factories泛化成真,并帶來更多其它利益。

            posted on 2007-12-29 22:05 cuigang 閱讀(377) 評論(0)  編輯 收藏 引用 所屬分類: 《C++設計新思維》讀書筆記

            久久精品国产第一区二区三区 | 久久久久香蕉视频| 亚洲国产精品久久66| 日韩中文久久| 久久精品一区二区国产| 久久精品二区| 亚洲国产精品无码久久| 精品综合久久久久久88小说| 久久99热这里只有精品国产| 久久精品国产精品青草| 精品久久久中文字幕人妻| 7国产欧美日韩综合天堂中文久久久久| 久久男人中文字幕资源站| 久久国产高清字幕中文| 久久99久国产麻精品66 | 久久国产欧美日韩精品免费| 91精品国产色综合久久| 亚洲va久久久噜噜噜久久| 久久男人AV资源网站| 久久香蕉国产线看观看乱码| 久久久久99精品成人片试看| 性做久久久久久久久浪潮| 久久男人AV资源网站| 精品久久久久久无码中文字幕 | 久久99这里只有精品国产| 久久久久久av无码免费看大片| 精品综合久久久久久97超人| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 久久国产成人亚洲精品影院| 久久国产成人精品麻豆| 久久国产精品久久久| 97精品国产91久久久久久| 国产人久久人人人人爽| 婷婷五月深深久久精品| 综合人妻久久一区二区精品| 久久午夜福利无码1000合集| 狠狠色婷婷久久综合频道日韩| 久久天天躁狠狠躁夜夜avapp| 国产免费久久精品99re丫y| 久久久久亚洲精品日久生情| 一本久久a久久精品亚洲|