设计模式-1.6建造者模式(生成器模式)

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

与工厂模式不同,建造者模式是在导向者的控制下一步一步构造产品的。创建者模式可以能更精细的控制构建过程,从而能更精细的控制所得产品的内部结构。

对于客户来说,只需知道导向者就可以了,通过导向者,客户就能构造复杂的对象,而不需要知道具体的构造过程。下面给出小人例子的代码实现。

 1 class Builder  

 2 {

 3 public:

 4     virtual void BuildHead() {}

 5     virtual void BuildBody() {}

 6     virtual void BuildLeftArm(){}

 7     virtual void BuildRightArm() {}

 8     virtual void BuildLeftLeg() {}

 9     virtual void BuildRightLeg() {}

10 };

11 //构造瘦人

12 class ThinBuilder : public Builder

13 {

14 public:

15     void BuildHead() { cout<<"build thin body"<<endl; }

16     void BuildBody() { cout<<"build thin head"<<endl; }

17     void BuildLeftArm() { cout<<"build thin leftarm"<<endl; }

18     void BuildRightArm() { cout<<"build thin rightarm"<<endl; }

19     void BuildLeftLeg() { cout<<"build thin leftleg"<<endl; }

20     void BuildRightLeg() { cout<<"build thin rightleg"<<endl; }

21 };

22 //构造胖人

23 class FatBuilder : public Builder

24 {

25 public:

26     void BuildHead() { cout<<"build fat body"<<endl; }

27     void BuildBody() { cout<<"build fat head"<<endl; }

28     void BuildLeftArm() { cout<<"build fat leftarm"<<endl; }

29     void BuildRightArm() { cout<<"build fat rightarm"<<endl; }

30     void BuildLeftLeg() { cout<<"build fat leftleg"<<endl; }

31     void BuildRightLeg() { cout<<"build fat rightleg"<<endl; }

32 };

33 //构造的指挥官

34 class Director  

35 {

36 private:

37     Builder *m_pBuilder;

38 public:

39     Director(Builder *builder) { m_pBuilder = builder; }

40     void Create(){

41         m_pBuilder->BuildHead();

42         m_pBuilder->BuildBody();

43         m_pBuilder->BuildLeftArm();

44         m_pBuilder->BuildRightArm();

45         m_pBuilder->BuildLeftLeg();

46         m_pBuilder->BuildRightLeg();

47     }

48 };

客户端:

1 int main()

2 {

3     FatBuilder thin;

4     Director director(&thin);

5     director.Create();

6     return 0;

7 }

 

你可能感兴趣的:(建造者模式)