Modèle de conception C brève introduction au modèle de constructeur

黄舟
Libérer: 2017-01-17 13:39:14
original
1395 Les gens l'ont consulté

Modèle Builder (Builder) : Sépare la construction d'un objet complexe de sa représentation, afin que le même processus de construction puisse créer différentes représentations.

Implémentation du modèle :

[code]class Builder;
//产品
class Product{
public:
    void AddPart(const char *info){
        m_PartInfoVec.push_back(info);
    }
    void ShowProduct(){
        for(std::vector<const char *>::iterator item = m_PartInfoVec.begin(); item != m_PartInfoVec.end(); ++item){
            std::cout << *item << std::endl;
        }
    }
private:
    std::vector<const char *> m_PartInfoVec;
};

//Builder建造者,统一抽象接口
class Builder{
public:
    virtual void BuildPartA(){}
    virtual void BuildPartB(){}
    virtual Product* GetProduct() { return NULL;}
};

//具体的被创建对象方法
class ConcreteBuilder:public Builder{
public:
    ConcreteBuilder(){ m_Product = new Product(); }
    void BuildPartA(){
        m_Product->AddPart("PartA completed");
    }
    void BuildPartB(){
        m_Product->AddPart("PartB q");
    }
    Product* GetProduct(){
        return m_Product;
    }
private:
    Product *m_Product;
};

//Director控制具体建造对象的创建
class Director{
public:
    Director(Builder *builder) { m_Builder = builder; }
    void CreateProduct(){
        m_Builder->BuildPartA();
        m_Builder->BuildPartB();
    }
private:
    Builder *m_Builder;
};
Copier après la connexion

Client :

[code]int main(){
    Builder *builderObj =  new ConcreteBuilder();

    Director directorObj(builderObj);
    directorObj.CreateProduct();

    Product *productObj = builderObj->GetProduct();

    if(productObj == NULL)
    {
        return 0;
    }
    productObj->ShowProduct();

    delete productObj;
    productObj = NULL;
    delete builderObj;
    builderObj = NULL;
}
Copier après la connexion

Ce qui précède est le contenu du modèle de construction du modèle de conception C, plus de contenu connexe s'il vous plaît faites attention au site Web PHP chinois (www.php.cn) !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal