• <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
            數(shù)據(jù)加載中……

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


            3. Typelists

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

            有些設計模式具體指定并操作一群型別,其中也許有繼承關系(但也許沒有)。顯著的例子是abstract factory和visitor。如果以傳統(tǒng)編程技術來操作一大群型別,將是全然的重復工作。如此重復會導致隱微的代碼膨脹。多數(shù)人不會想到其實它可以比現(xiàn)在更好。Typelists帶給你一種能力,可以將經(jīng)常性的宏工作自動化。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不是虛函數(shù),那么你就陷入了長長的Switch...case...之中,如果它是虛函數(shù),那么虛函數(shù)不能是模板。
            Typelists將使Abstract Factories泛化成真,并帶來更多其它利益。

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

            久久久久成人精品无码| 99久久www免费人成精品| 青青草原综合久久大伊人| 一级做a爰片久久毛片看看| 中文字幕精品久久久久人妻| 精品久久久无码人妻中文字幕豆芽| 亚洲第一极品精品无码久久| 精品无码久久久久久国产| 热99RE久久精品这里都是精品免费| 精品国际久久久久999波多野 | 久久婷婷国产麻豆91天堂| 91久久精品电影| A级毛片无码久久精品免费| 久久精品不卡| 国产ww久久久久久久久久| 亚洲精品午夜国产VA久久成人| 久久精品成人欧美大片| 国产亚洲精久久久久久无码AV| 精品多毛少妇人妻AV免费久久| 99久久99久久精品国产| 久久噜噜电影你懂的| 国内精品久久人妻互换| 国产精品久久国产精品99盘| 69SEX久久精品国产麻豆| 久久久久四虎国产精品| 91精品久久久久久无码| 国内精品久久久久国产盗摄| 久久本道综合久久伊人| 欧美喷潮久久久XXXXx| 久久国产精品波多野结衣AV| 欧美激情精品久久久久久久九九九| 久久综合色之久久综合| 99久久人妻无码精品系列| 国产一区二区三精品久久久无广告| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 久久精品一区二区国产| 国产三级精品久久| 亚洲精品白浆高清久久久久久| 婷婷综合久久中文字幕| 国产亚洲综合久久系列| 久久久久亚洲国产|