建造者模式(Builder Pattern)

来源:互联网 发布:修改linux ip地址 编辑:程序博客网 时间:2024/06/05 01:10

建造者模式(Builder Pattern)

flyfish 2016-1-22
C++实现

class Product{public:    void DoSomething(){}};class Builder{public:    virtual void SetPart1(){};//处理Product的第一部分    virtual void SetPart2(){};//处理Product的第二部分    virtual Product* GetProduct(){return nullptr;}//product生成之后,经过SetPart1,SetPart2处理,最后返回结果};//A和B 中的SetPart1,SetPart2不同class ConcreteProductA: public Builder{public:     ConcreteProductA(){product_=new Product();}    void SetPart1(){}//产品内的逻辑处理    void SetPart2(){}//    Product* GetProduct(){return product_;}//private:    Product* product_;};class ConcreteProductB: public Builder{public:     ConcreteProductB(){product_=new Product();}    void SetPart1(){}//产品内的逻辑处理    void SetPart2(){}    Product* GetProduct(){return product_;}private:    Product* product_;};class Director{public:    void ProcessProduct()    {        builder_->SetPart1();        builder_->SetPart2();    }public:    Director(Builder *builder) { builder_ = builder; }    Builder* builder_;};
int _tmain(int argc, _TCHAR* argv[]){    {        Builder *a = new ConcreteProductA();        Director *d= new Director(a);        d->ProcessProduct();        Product* p=a->GetProduct();        p->DoSomething();    }    {        Builder *b = new ConcreteProductB();        Director *d= new Director(b);        d->ProcessProduct();        Product* p=b->GetProduct();        p->DoSomething();    }    return 0;}
0 0
原创粉丝点击