首页 > 后端开发 > C#.Net教程 > C++设计模式浅识建造者模式

C++设计模式浅识建造者模式

黄舟
发布: 2017-01-17 13:39:14
原创
1467 人浏览过

建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

模式实现:

[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;
};
登录后复制

客户端:

[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;
}
登录后复制

以上就是C++设计模式浅识建造者模式的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
我的简历标题
来自于 1970-01-01 08:00:00
0
0
0
vim 如何简化 频繁使用的命令
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板