• <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, 評(píng)論 - 137, 引用 - 0
            數(shù)據(jù)加載中……

            《C++設(shè)計(jì)新思維》讀書(shū)筆記(16)


            3. Typelists

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

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

            3.1 Typelists的必要性

            有時(shí)候你必須針對(duì)某些型別重復(fù)撰寫(xiě)相同代碼,而templates無(wú)法幫上忙。假如有一個(gè)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,而是任意型別。怎么辦?

            如果你不試圖泛化基本概念,就不太有機(jī)會(huì)泛化這些概念的具象實(shí)體。雖然抽象基類(lèi)很簡(jiǎn)單,但是你會(huì)陷入無(wú)窮無(wú)盡的派生類(lèi)生成器中。

            我們希望能夠這樣去使用一個(gè)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 }


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

            posted on 2007-12-29 22:05 cuigang 閱讀(369) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 《C++設(shè)計(jì)新思維》讀書(shū)筆記

            久久国产精品成人免费| 久久久久99精品成人片直播| 大伊人青草狠狠久久| 91精品日韩人妻无码久久不卡 | 亚洲人成网站999久久久综合| 久久久久久无码国产精品中文字幕 | 大香伊人久久精品一区二区| 99久久国产宗和精品1上映| 日韩av无码久久精品免费| 久久精品成人免费看| 色综合久久中文字幕综合网| 国产精品久久婷婷六月丁香| 2020久久精品国产免费| 久久九色综合九色99伊人| 香蕉久久av一区二区三区| 久久久久久久综合日本亚洲| 久久婷婷色香五月综合激情| 精品国产一区二区三区久久久狼| 亚洲欧美精品一区久久中文字幕| 亚洲中文精品久久久久久不卡| 办公室久久精品| 久久亚洲AV成人出白浆无码国产| 超级碰久久免费公开视频| 国内精品伊人久久久久777| 99久久国产综合精品五月天喷水| 久久九九兔免费精品6| 久久久久黑人强伦姧人妻| 久久精品无码午夜福利理论片| 性做久久久久久久久久久| 国内精品久久久久久久coent| 久久综合给久久狠狠97色| 人妻少妇精品久久| 岛国搬运www久久| 久久国产一区二区| 精品国产乱码久久久久久1区2区 | 亚洲国产欧美国产综合久久| 亚洲а∨天堂久久精品9966| 国产亚洲精午夜久久久久久| 狠狠人妻久久久久久综合蜜桃| 亚洲成色999久久网站| 亚洲精品高清久久|