c++建造者模式

来源:互联网 发布:找房子软件 编辑:程序博客网 时间:2024/05/12 12:07
// ConsoleApplication1.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <iostream>//#include "Factory.h"using namespace std;class Man{public:    Man():flag(false) {}    void BuildHead() {cout<<"Head is building"<<endl;}    void BuildBody()    {        flag = true;//body is finished,so man is OK;         cout<<"Body is building"<<endl;    }    void ShowResult()    {        if(flag)        {            cout<<"Man was OK"<<endl;        }        else        {            cout<<"Man was not OK"<<endl;        }    }private:    bool flag;};class Builder{public:    virtual void BuildHead() = 0;    virtual void BuildBody() = 0;    virtual Man* GetMan() const = 0;};class ChineseBuilder:public Builder{private:    Man* m_pMan;public:    ChineseBuilder():m_pMan(new Man()) {}    void BuildHead() {m_pMan->BuildHead();}    void BuildBody() {m_pMan->BuildBody();}    Man* GetMan() const {return m_pMan;}};class Director{public:    Director(Builder* pMan) {m_pMan = pMan;}    void CreateMan()    {        if(NULL != m_pMan)        {            m_pMan->BuildHead();            m_pMan->BuildBody();        }    }private:    Builder* m_pMan;};int _tmain(int argc, _TCHAR* argv[]){    // you need to build a man ,and you he must be Chinese.    Builder* pBuilder = new ChineseBuilder();    // OK,we know you need to build a  Chinese man.    Director* pDirector = new Director(pBuilder);    // begin to build a man .    pDirector->CreateMan();    Man* pMan = pBuilder->GetMan();    // check whether we have built the Chinese succeed.    pMan->ShowResult();    getchar();    return 0;}
0 0
原创粉丝点击