工廠模式


#include <stdio.h>
#include <iostream>
using namespace std;
class LeiFeng {
    
public:
    void Sweep(){cout<<"sweep"<<endl;}
    void Wash(){cout<<"wash"<<endl;}
    void BuyRice(){cout<<"byerice"<<endl;}
    
};

class Undergraduate:public LeiFeng {
};

class Volunteer: public LeiFeng {
};

class SampleFactory {
public:
    static LeiFeng * CreateLeiFeng(int type)
    {
        LeiFeng * result = NULL;
        switch (type) {
            case 1:
                result = new Undergraduate();
                break;
                case 2:
                result = new Volunteer();
                break;
            default:
                break;
        }
        return  result;
    }
};


class IFactory {
    
public:
    virtual ~IFactory(){};
    virtual LeiFeng * CreateLeiFeng() = 0;
};

class UndergraduateFactory:public IFactory {
    
public:
    LeiFeng * CreateLeiFeng(){
        return new Undergraduate();
    }
};

class VolunteerFactory:public IFactory{
    
public:
    LeiFeng * CreateLeiFeng(){
        return new Volunteer();
    }
};



void testLesson5(){
    //sample factory
    LeiFeng * student1 = SampleFactory::CreateLeiFeng(graduate);
    LeiFeng * student2 = SampleFactory::CreateLeiFeng(graduate);
    LeiFeng * student3 = SampleFactory::CreateLeiFeng(graduate);
    student1->Wash();
    student2->Sweep();
    student3->Wash();
    
    IFactory * factory = new UndergraduateFactory();
    LeiFeng * student = factory->CreateLeiFeng();
    student->BuyRice();
    student->Sweep();
    student->Wash();

}

重要概念

簡單工廠模式的最大優(yōu)點在于工廠類中包含了必要的邏輯,根據(jù)客戶端的選擇條件動態(tài)實例化相關(guān)類,對客戶端來說,去處了對產(chǎn)品的依賴

工廠方法模式,定義了一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類,工廠方法使一個類的實例化延遲到子類

好處就是能一次性改掉想改的東西,如果一個一個的去創(chuàng)建,那就比較蛋疼了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 今天學(xué)習(xí)下最常見的工廠模式,工廠模式細(xì)分下來有三大類: 他們的目標(biāo)都是一樣的:封裝對象的創(chuàng)建。但是實現(xiàn)手段和使用場...
    西木柚子閱讀 2,221評論 7 28
  • 1.接口基礎(chǔ)回顧 設(shè)計模式六大原則,其中依賴倒轉(zhuǎn)原則,強調(diào)我們應(yīng)該面向接口編程,那什么是接口?接口的作用? 接口如...
    孟婆湯不解渴閱讀 902評論 0 3
  • 一、工廠模式介紹 工廠模式專門負(fù)責(zé)將大量有共同接口的類實例化。工廠模式可以動態(tài)決定將哪一個類實例化,不必事先知道每...
    端木軒閱讀 12,996評論 1 20
  • 明透心徑,理通靚景。 在體熱難受中,涼凈行執(zhí)圓筆畫, 希望給大家?guī)肀?清神 凈惱。 冰靜看,再次理解他。 希望...
    春城怡景閱讀 697評論 33 19
  • 在給出圖的定義后第一個問題就是如何遍歷圖的所有頂點,有兩種最基礎(chǔ)的圖遍歷算法。如果給圖添加更多的特征和屬性,將產(chǎn)生...
    9bc96fd72f8e閱讀 5,022評論 0 1

友情鏈接更多精彩內(nèi)容