Repository navigation
Expand file tree
/
Copy pathCreational_builder_design_pattern-2.cpp
More file actions
138 lines (115 loc) · 2.78 KB
/
Copy pathCreational_builder_design_pattern-2.cpp
File metadata and controls
138 lines (115 loc) · 2.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include <iostream>
#include <string>
using namespace std;
/*from which you are going to create bog/complex object , We will use this class to construct small object */
class wheel
{
public:
int numberOfwheel;
wheel(int numbwheel)
{
numberOfwheel = numbwheel;
}
};
class engine
{
public:
string enginetyp;
engine(string eng)
{
enginetyp = eng;
}
};
class body
{
public:
string bdy;
body(string bdyOftrck)
{
bdy = bdyOftrck;
}
};
/* Product which you want to create , lasrge object */
class truck
{
public:
int wheel;
string engine;
string body;
};
/* builder which is responsible for building small object anf final product will be big */
class truckBuilder
{
public:
virtual int getWheel() = 0;
virtual string getEngine() = 0;
virtual string getBody() = 0;
};
/* Concrete classes for builder class */
class SmallTruck : public truckBuilder
{
public:
int getWheel()
{
wheel* wObj = new wheel(10);
return wObj->numberOfwheel;
}
string getEngine()
{
engine* eObj = new engine("4 strock engine");
return eObj->enginetyp;
}
string getBody()
{
body* bObj = new body("Fiber body ");
return bObj->bdy;
}
};
/*Concrete classes for builder class */
class bigTruck : public truckBuilder
{
public:
int getWheel()
{
wheel* wObj = new wheel(4);
return wObj->numberOfwheel;
}
string getEngine()
{
engine* eObj = new engine("4 strock engine");
return eObj->enginetyp;
}
string getBody()
{
body* bObj = new body("Fiber body and iron ");
return bObj->bdy;
}
};
/* Director is responsible for the whole process , creating complex object */
class vehicleDirector
{
truckBuilder* builder;
public:
truck* getTruck(truckBuilder* newBuilder)
{ builder = newBuilder;
truck* truckObj = new truck();
truckObj->wheel = builder->getWheel();
truckObj->engine = builder->getEngine();
truckObj->body = builder->getBody();
return truckObj;
}
};
int main()
{
/* created object because i want to get complex object */
vehicleDirector director;
/* which type of complex object you want */
bigTruck bigtruckObj;
//director.setBuilder();
truck* truckObj;
/* getTruck will return complex object of truck */
truckObj = director.getTruck(&bigtruckObj);
cout<<"number of wheel : "<<truckObj->wheel;
cout<<endl<<"body type is : "<<truckObj->body;
return 0;
}