'Builder' Design Pattern using simple program
· One min read
Definition:
Separate the construction of a complex object from its representation so that the same construction process can create different representations.
Program:
#include "iostream"
using namespace std;
// Builder pattern -- Creational example
class Product
{
private:
char* _parts[10];
int i;
public:
Product()
{
i = 0;
}
void Add(char* part)
{
_parts[i] = part;
i++;
}
void Show()
{
cout<
for(int j = 0; j {
cout<<_parts[j]<BuildPartA();
builder->BuildPartB();
}
};
class ConcreteBuilder1 : public Builder
{
private:
Product _product;
public:
virtual void BuildPartA()
{
_product.Add("PartA");
}
virtual void BuildPartB()
{
_product.Add("PartB");
}
virtual Product GetResult()
{
return _product;
}
};
class ConcreteBuilder2 : public Builder
{
private:
Product _product;
public:
virtual void BuildPartA()
{
_product.Add("PartX");
}
virtual void BuildPartB()
{
_product.Add("PartY");
}
virtual Product GetResult()
{
return _product;
}
};
void main()
{
// Create director and builders
Director director;
ConcreteBuilder1 b1;
ConcreteBuilder2 b2;
Product p1;
Product p2;
// Construct product p1
director.Construct(&b1);
p1 = b1.GetResult();
p1.Show();
// Construct product p2
director.Construct(&b2);
p2 = b2.GetResult();
p2.Show();
getchar();
}
/*
OUT PUT
Product Parts:
PartA
PartB
Product Parts:
PartX
PartY
*/