亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? abstractfactory.h

?? 和modern c++ design 這本書配套的程序庫。可以從作者的網站上免費下載。
?? H
字號:
////////////////////////////////////////////////////////////////////////////////
// The Loki Library
// Copyright (c) 2001 by Andrei Alexandrescu
// This code accompanies the book:
// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
// Permission to use, copy, modify, distribute and sell this software for any 
//     purpose is hereby granted without fee, provided that the above copyright 
//     notice appear in all copies and that both that copyright notice and this 
//     permission notice appear in supporting documentation.
// The author or Addison-Welsey Longman make no representations about the 
//     suitability of this software for any purpose. It is provided "as is" 
//     without express or implied warranty.
////////////////////////////////////////////////////////////////////////////////

// Last update: June 20, 2001

#ifndef ABSTRACTFACTORY_INC_
#define ABSTRACTFACTORY_INC_

#include "Typelist.h"
#include "TypeManip.h"
#include "HierarchyGenerators.h"

#include <cassert>

namespace Loki
{

////////////////////////////////////////////////////////////////////////////////
// class template AbstractFactoryUnit
// The building block of an Abstract Factory
////////////////////////////////////////////////////////////////////////////////

    template <class T>
    class AbstractFactoryUnit
    {
    public:
        virtual T* DoCreate(Type2Type<T>) = 0;
        virtual ~AbstractFactoryUnit() {}
    };

////////////////////////////////////////////////////////////////////////////////
// class template AbstractFactory
// Defines an Abstract Factory interface starting from a typelist
////////////////////////////////////////////////////////////////////////////////

    template
    <
        class TList,
        template <class> class Unit = AbstractFactoryUnit
    >
    class AbstractFactory : public GenScatterHierarchy<TList, Unit>
    {
    public:
        typedef TList ProductList;
        
        template <class T> T* Create()
        {
            Unit<T>& unit = *this;
            return unit.DoCreate(Type2Type<T>());
        }
    };
    
////////////////////////////////////////////////////////////////////////////////
// class template OpNewFactoryUnit
// Creates an object by invoking the new operator
////////////////////////////////////////////////////////////////////////////////

    template <class ConcreteProduct, class Base>
    class OpNewFactoryUnit : public Base
    {
        typedef typename Base::ProductList BaseProductList;
    
    protected:
        typedef typename BaseProductList::Tail ProductList;
    
    public:
        typedef typename BaseProductList::Head AbstractProduct;
        ConcreteProduct* DoCreate(Type2Type<AbstractProduct>)
        {
            return new ConcreteProduct;
        }
    };

////////////////////////////////////////////////////////////////////////////////
// class template PrototypeFactoryUnit
// Creates an object by cloning a prototype
// There is a difference between the implementation herein and the one described
//     in the book: GetPrototype and SetPrototype use the helper friend 
//     functions DoGetPrototype and DoSetPrototype. The friend functions avoid
//     name hiding issues. Plus, GetPrototype takes a reference to pointer
//     instead of returning the pointer by value.
////////////////////////////////////////////////////////////////////////////////

    template <class ConcreteProduct, class Base>
    class PrototypeFactoryUnit : public Base
    {
        typedef typename Base::ProductList BaseProductList;
    
    protected:
        typedef typename BaseProductList::Tail ProductList;

    public:
        typedef typename BaseProductList::Head AbstractProduct;

        PrototypeFactoryUnit(AbstractProduct* p = 0)
            : pPrototype_(p)
        {}
        
        friend void DoGetPrototype(const PrototypeFactoryUnit& me,
            AbstractProduct*& pPrototype)
        { pPrototype = me.pPrototype_; }
        
        friend void DoSetPrototype(PrototypeFactoryUnit& me, 
            AbstractProduct* pObj)
        { me.pPrototype_ = pObj; }
        
        template <class U>
        void GetPrototype(AbstractProduct*& p)
        { return DoGetPrototype(*this, p); }
        
        template <class U>
        void SetPrototype(U* pObj)
        { DoSetPrototype(*this, pObj); }
        
        AbstractProduct* DoCreate(Type2Type<AbstractProduct>)
        {
            assert(pPrototype_);
            return pPrototype_->Clone();
        }
        
    private:
        AbstractProduct* pPrototype_;
    };

////////////////////////////////////////////////////////////////////////////////
// class template ConcreteFactory
// Implements an AbstractFactory interface
////////////////////////////////////////////////////////////////////////////////

    template
    <
        class AbstractFact,
        template <class, class> class Creator = OpNewFactoryUnit,
        class TList = typename AbstractFact::ProductList
    >
    class ConcreteFactory
        : public GenLinearHierarchy<
            typename TL::Reverse<TList>::Result, Creator, AbstractFact>
    {
    public:
        typedef typename AbstractFact::ProductList ProductList;
        typedef TList ConcreteProductList;
    };

} // namespace Loki

////////////////////////////////////////////////////////////////////////////////
// Change log:
// June 20, 2001: ported by Nick Thurn to gcc 2.95.3. Kudos, Nick!!!
////////////////////////////////////////////////////////////////////////////////

#endif // ABSTRACTFACTORY_INC_

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产综合人成综合网站| 国产精品白丝jk黑袜喷水| 欧美bbbbb| av电影在线不卡| 精品久久久久久久人人人人传媒| 国产精品毛片高清在线完整版| 免费观看30秒视频久久| 99视频超级精品| 精品少妇一区二区三区视频免付费 | 成人激情小说网站| 日韩欧美一区二区视频| 一区二区三区四区高清精品免费观看 | 色综合激情久久| 国产婷婷一区二区| 麻豆精品久久精品色综合| 欧美视频在线不卡| 亚洲图片激情小说| 99久久er热在这里只有精品15| 久久久久国产免费免费| 麻豆一区二区在线| 欧美一区二区三区在线视频| 国产一区二区精品久久99| 日韩精品视频网| 欧美系列日韩一区| 亚洲女与黑人做爰| 91一区二区在线| 国产女主播一区| 国产成人精品1024| 国产视频一区二区三区在线观看| 国产在线精品一区二区不卡了| 日韩一区二区三区视频在线| 首页国产欧美久久| 51精品国自产在线| 免费在线一区观看| 亚洲精品一区二区三区影院| 久久99久国产精品黄毛片色诱| 日韩一卡二卡三卡国产欧美| 男人的天堂久久精品| 欧美一区二区三区播放老司机| 日韩精品三区四区| 日韩视频免费观看高清在线视频| 久久精品国内一区二区三区| 日韩欧美一区二区视频| 国产一区二区免费视频| 国产视频911| 99精品一区二区三区| 亚洲精品欧美综合四区| 欧美调教femdomvk| 伦理电影国产精品| 日本一区二区三区电影| a在线欧美一区| 亚洲午夜在线视频| 91麻豆精品国产无毒不卡在线观看| 蜜桃一区二区三区四区| 国产日本欧美一区二区| 一本色道久久综合狠狠躁的推荐| 亚洲国产精品久久艾草纯爱| 日韩欧美一级片| 成人国产精品视频| 91精品综合久久久久久| 中文字幕乱码一区二区免费| 色综合天天综合给合国产| 亚洲成人在线免费| 精品久久久久久久久久久久久久久 | 亚洲午夜在线电影| 欧美一级日韩不卡播放免费| 丁香亚洲综合激情啪啪综合| 亚洲综合色视频| 精品少妇一区二区三区免费观看| 成人三级在线视频| 日韩精品福利网| 国产精品全国免费观看高清| 欧美日韩一区二区不卡| 国产精品一级二级三级| 亚洲一区在线看| 国产欧美精品一区二区色综合朱莉 | 国产精品成人网| 91精品综合久久久久久| 99国产精品国产精品久久| 日韩不卡在线观看日韩不卡视频| 国产精品丝袜久久久久久app| 欧美色倩网站大全免费| 成人动漫视频在线| 蜜臀av性久久久久av蜜臀妖精| 亚洲视频免费在线观看| 26uuu精品一区二区三区四区在线| 色哟哟亚洲精品| 国产伦精一区二区三区| 五月婷婷色综合| 亚洲少妇屁股交4| 国产欧美一区二区精品秋霞影院| 欧美精品xxxxbbbb| 色中色一区二区| 99久精品国产| a在线播放不卡| 国产米奇在线777精品观看| 日本午夜一本久久久综合| 国产精品小仙女| 日韩美女视频一区| 国产亚洲1区2区3区| 精品欧美乱码久久久久久1区2区| 91.麻豆视频| 欧美日韩免费观看一区三区| 一本久久a久久免费精品不卡| 成人免费三级在线| 粉嫩久久99精品久久久久久夜| 国产在线视视频有精品| 日韩精品亚洲一区| 日韩 欧美一区二区三区| 亚洲一区二区视频在线观看| 一区二区三区成人| 一区二区三区日韩欧美| 亚洲精选一二三| 亚洲精品视频在线看| 有码一区二区三区| 亚洲一区二区综合| 亚洲成人免费观看| 日韩二区在线观看| 美女www一区二区| 七七婷婷婷婷精品国产| 精品午夜久久福利影院| 久久精品国产亚洲aⅴ| 国产自产高清不卡| 国产精品一级二级三级| 成人激情免费网站| 91在线观看成人| 欧美在线三级电影| 9191国产精品| 337p日本欧洲亚洲大胆精品| 欧美国产一区二区| 亚洲欧洲精品一区二区三区| 亚洲在线中文字幕| 日韩av不卡在线观看| 国产一区二区三区美女| 99久久99久久免费精品蜜臀| 91国偷自产一区二区三区观看| 免费成人在线影院| 一区二区三区精品久久久| 午夜成人在线视频| 国产美女精品人人做人人爽 | 成人国产精品免费观看| 91免费版pro下载短视频| 欧美午夜免费电影| 精品奇米国产一区二区三区| 国产精品久久毛片| 亚洲成人av免费| 精品亚洲成a人| 91同城在线观看| 日韩一级在线观看| 国产精品进线69影院| 日韩激情一区二区| 国产suv精品一区二区6| 欧美午夜精品久久久| 久久久久久夜精品精品免费| 亚洲女与黑人做爰| 激情综合一区二区三区| 99精品欧美一区二区三区小说 | 亚洲精品视频免费观看| 另类小说一区二区三区| 91美女片黄在线观看| 欧美大黄免费观看| 亚洲资源在线观看| 国产成人免费视频网站 | 色婷婷久久综合| 欧美本精品男人aⅴ天堂| 亚洲免费av观看| 国产成人亚洲精品狼色在线| 在线播放国产精品二区一二区四区 | 麻豆精品视频在线观看视频| 北条麻妃一区二区三区| 欧美videossexotv100| 日韩午夜在线观看视频| 2024国产精品| 日本欧美久久久久免费播放网| 91视频91自| 国产日本欧洲亚洲| 韩国午夜理伦三级不卡影院| 欧美性大战久久久久久久蜜臀 | 色综合天天视频在线观看| 精品电影一区二区| 日韩福利视频网| 欧美午夜片在线观看| 亚洲精品中文字幕在线观看| 成人免费毛片片v| 欧美国产日产图区| 国产在线视频不卡二| 日韩亚洲欧美成人一区| 奇米一区二区三区| 538prom精品视频线放| 亚洲一区二区三区视频在线| 91理论电影在线观看| 亚洲欧洲色图综合| 99久久久久久| 综合电影一区二区三区| av高清不卡在线| 中文字幕一区二区在线观看| 成人美女在线观看| 中文字幕在线观看不卡视频| 成人手机在线视频| 成人欧美一区二区三区|