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

            Mike's blog

              C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
              0 Posts :: 23 Stories :: 83 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(17)

            我參與的團(tuán)隊(duì)

            搜索

            •  

            最新評(píng)論

            簡(jiǎn)單工廠模式又被稱為靜態(tài)工廠模式。簡(jiǎn)單工廠模式是由一個(gè)工廠對(duì)象決定創(chuàng)建出哪一種產(chǎn)品類(lèi)的實(shí)例。簡(jiǎn)單工廠模式是工廠模式家族中最簡(jiǎn)單實(shí)用的模式,可以理解為是不同工廠模式的一個(gè)特殊實(shí)現(xiàn)。


            UML類(lèi)圖:
             
            類(lèi)圖中只列出主要方法,而只有工廠類(lèi)中給出了構(gòu)造和析構(gòu)函數(shù),并且都是私有。目的是強(qiáng)調(diào)這個(gè)工廠類(lèi)的作用只是“出產(chǎn)品”,自己不需要實(shí)例化,所以將構(gòu)造和析構(gòu)聲明為私有(這個(gè)只適用于“簡(jiǎn)單”工廠模式)。
            代碼(為減小篇幅,代碼只實(shí)現(xiàn)部分,并code到一個(gè)cpp文件中):
             1#include <iostream>
             2
             3using namespace std;
             4
             5/// @brief Base operation class.
             6class Operation
             7{
             8protected:
             9    double m_numA;
            10    double m_numB;
            11    
            12public:
            13    Operation(): m_numA(0.0), m_numB(0.0{
            14        cout << "Operation constructor" << endl;
            15    }

            16
            17    virtual ~Operation() {
            18        cout << "Operation destructor" << endl;
            19    }

            20
            21    double virtual getResult() = 0;
            22}
            ;
            23
            24/// @brief The class implement the add operation.
            25class OperAdd: public Operation
            26{
            27public:
            28    OperAdd(double a, double b) {
            29        cout << "OperAdd constructor" << endl;
            30        m_numA = a;
            31        m_numB = b;
            32    }

            33
            34    ~OperAdd() {
            35        cout << "OperAdd destructor" << endl;
            36    }

            37
            38    double getResult() {
            39        return (m_numA + m_numB);
            40    }

            41}
            ;
            42
            43/// @brief The class OperSub, OperMul and OperDiv omitted. 
            44
            45class OperFactory
            46{
            47public:
            48    enum OPER_TYPE {
            49        ADD = 1,
            50        SUB = 2,
            51        MUL = 3,
            52        DIV = 4
            53    }
            ;
            54
            55    static Operation* createOperation(OPER_TYPE oper, double a, double b);
            56}
            ;
            57
            58Operation* OperFactory::createOperation(OPER_TYPE oper, double a, double b) 
            59{
            60    Operation* pOper = NULL;
            61
            62    switch (oper) {
            63    case ADD:
            64        pOper = new OperAdd(a, b);
            65        break;
            66    default:
            67        break;
            68    }

            69
            70    return pOper;
            71}

            72
            73int main()
            74{
            75    Operation* pOper = OperFactory::createOperation(OperFactory::ADD, 2.13.3);
            76
            77    if (pOper) {
            78        cout << pOper->getResult() << endl;
            79
            80        delete pOper;
            81        pOper = NULL;
            82    }

            83
            84    return 0;
            85}

            簡(jiǎn)單工廠模式的最大優(yōu)點(diǎn)在于工廠類(lèi)中包含了必要的邏輯判斷,根據(jù)客戶端的選擇條件動(dòng)態(tài)實(shí)例化相關(guān)的類(lèi),對(duì)于客戶端來(lái)說(shuō),去除了與具體產(chǎn)品的依賴。但簡(jiǎn)單工廠模式的工廠類(lèi)是開(kāi)放的,如果要增加其它產(chǎn)品,則要修改工廠類(lèi),這一點(diǎn)違背開(kāi)放-封閉原則(Open-Close Principle,對(duì)擴(kuò)展開(kāi)發(fā),對(duì)修改關(guān)閉)。而要克服這一缺點(diǎn),則要使用工廠方法模式(Factory Method),這種經(jīng)過(guò)改進(jìn)工廠模式將在下一節(jié)介紹。
            posted on 2010-08-09 21:34 老狼 閱讀(1503) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): C/C++
            性高湖久久久久久久久| 国产精品视频久久| 久久精品视频一| 亚洲国产欧美国产综合久久| 性做久久久久久久| 精品久久久久久无码免费| 欧美日韩中文字幕久久久不卡| 一级做a爰片久久毛片看看| 久久久久人妻精品一区二区三区| 久久99国产亚洲高清观看首页| 久久露脸国产精品| avtt天堂网久久精品| 久久久久久国产精品美女| 亚洲一区二区三区日本久久九| 久久精品免费一区二区| 国产成人综合久久精品尤物| 久久精品亚洲AV久久久无码| 久久久噜噜噜www成人网| 精品熟女少妇a∨免费久久| 久久精品青青草原伊人| 久久91精品国产91久久户| 色婷婷久久久SWAG精品| 久久精品无码专区免费东京热 | 久久精品成人一区二区三区| 7777精品伊人久久久大香线蕉| 国内精品久久久久影院薰衣草| 久久精品国产亚洲av麻豆小说| 国产一区二区三精品久久久无广告| 国内精品久久久久影院老司| 国产精品久久久久久影院| 久久美女人爽女人爽| 久久久久99精品成人片| 99re久久精品国产首页2020| 久久久久亚洲爆乳少妇无| 精品久久久久久久久中文字幕| 久久这里有精品| 久久精品国产第一区二区| 国产产无码乱码精品久久鸭| 理论片午午伦夜理片久久| 伊人久久大香线蕉av不卡| 一本色道久久88综合日韩精品 |