• <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 閱讀(369) 評論(0)  編輯 收藏 引用 所屬分類: 《C++設計新思維》讀書筆記

            精品人妻伦九区久久AAA片69| 久久精品国产亚洲αv忘忧草| 色婷婷综合久久久久中文一区二区 | 欧美日韩精品久久免费| 国产成人无码久久久精品一| 精品久久久无码中文字幕天天 | 久久精品国产亚洲av麻豆图片| 色婷婷综合久久久中文字幕 | 久久久WWW成人免费精品| 欧美喷潮久久久XXXXx| 99久久精品这里只有精品| 久久综合久久自在自线精品自| 18岁日韩内射颜射午夜久久成人| 久久精品极品盛宴观看| 欧美午夜A∨大片久久| 青青草原1769久久免费播放| 日韩久久久久久中文人妻| 99久久免费只有精品国产| 久久无码高潮喷水| 国产精品久久久99| 国产亚洲成人久久| 国产精品女同久久久久电影院| 久久男人AV资源网站| 久久亚洲2019中文字幕| 狠狠色丁香久久婷婷综| 国产精品一久久香蕉产线看| 久久亚洲AV成人无码电影| 亚洲精品97久久中文字幕无码| 99久久免费国产精品特黄| 超级碰久久免费公开视频| 亚洲AV日韩AV天堂久久| www.久久99| 伊人久久精品无码av一区| 99久久er这里只有精品18| 99久久精品免费看国产一区二区三区 | 国内精品久久久久久中文字幕| 久久不见久久见免费视频7| 日本精品久久久久中文字幕8 | 久久精品嫩草影院| 国产精品无码久久综合| 国产一区二区三区久久|