1_4 BuilderMode 建造者模式
生活随笔
收集整理的這篇文章主要介紹了
1_4 BuilderMode 建造者模式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
// 定義:將一個復(fù)雜對象的構(gòu)建與其表示分離,使得同樣的建造過程
// 可以創(chuàng)建不同的表示
//
// 模式舉例:捏泥人,要捏頭,捏身體,捏胳膊,捏腿,胖人的捏法
// 和瘦人的捏法過程差不多,出來的人差別很大
//
// 模式特點:必有一個director類和一些Builder類
//
// 模式知識:該模式是一個典型的將行為抽象成對象
//
//#include<iostream>
#include<string>
using namespace std;class Mudman
{
public:void setHeadSize(int size){m_headsize = size;}void setBodySize(int size){m_bodysize = size;}void setArmSize(int size){m_armsize = size;}void setLegSize(int size){m_legsize = size;}void showMan(){cout <<"mud man head size "<<m_headsize<<" mud man body size "<<m_bodysize<<" mud man arm size "<<m_armsize<<" mud man leg size "<<m_legsize;}private:int m_headsize;int m_bodysize;int m_armsize;int m_legsize;
};//Builder這里要有獲取到生成泥人的接口
class Builder
{
public:virtual void buildHead()=0;virtual void buildBody()=0;virtual void buildArm()=0;virtual void buildLeg()=0;virtual Mudman * getMudman()=0;
};class FatmanBuilder : public Builder
{
public:FatmanBuilder(Mudman * man):m_man(man){}virtual void buildHead(){m_man->setHeadSize(8);}virtual void buildBody(){m_man->setBodySize(8);}virtual void buildArm(){m_man->setArmSize(8);}virtual void buildLeg(){m_man->setLegSize(8);}virtual Mudman * getMudman(){return m_man;}
private:Mudman * m_man;
};class ThinmanBuilder : public Builder
{
public:ThinmanBuilder(Mudman * man):m_man(man){}virtual void buildHead(){m_man->setHeadSize(5);}virtual void buildBody(){m_man->setBodySize(5);}virtual void buildArm(){m_man->setArmSize(5);}virtual void buildLeg(){m_man->setLegSize(5);}virtual Mudman * getMudman(){return m_man;}
private:Mudman * m_man;
};class Director
{
public:Director(Builder * builder):m_builder(builder){}//建造者只管建造,沒有返回值的void buildMudMan(){m_builder->buildHead();m_builder->buildBody();m_builder->buildArm();m_builder->buildLeg();}
private:Builder * m_builder;
};int main()
{Builder * builder = new FatmanBuilder(new Mudman);Director * director = new Director(builder);director->buildMudMan();builder->getMudman()->showMan();return 0;
}
?
總結(jié)
以上是生活随笔為你收集整理的1_4 BuilderMode 建造者模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ COM编程之QueryInter
- 下一篇: 2_3 ProxyMode.cpp 代理