-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuilder_pattern.cpp
More file actions
70 lines (55 loc) · 1.42 KB
/
builder_pattern.cpp
File metadata and controls
70 lines (55 loc) · 1.42 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
#include <stdio.h>
/**
* An example for Builder pattern usage.
* Builder pattern can be used for auto-generation of configuration files
* which are composed of different parts, the order is important etc.
* The main idea is to seperate logic and data from each other.
*/
class ConfBuilder
{
public:
ConfBuilder(){};
virtual ~ConfBuilder(){};
virtual void AddVersionAndInclusion() = 0;
virtual void AddSource() = 0;
virtual void AddDest() = 0;
};
class DummyNetworkProtocolConfBuilder : public ConfBuilder
{
public:
DummyNetworkProtocolConfBuilder(){};
~DummyNetworkProtocolConfBuilder(){};
void AddVersionAndInclusion()
{
printf("\n@version: 1.0");
printf("\n@include \"dummy.conf\"\n");
}
void AddSource()
{
printf("\nsource {");
printf("\n};\n");
}
void AddDest()
{
printf("\ndestination {");
printf("\n};\n");
}
};
class DummyNetworkProtocolConfGenerator
{
ConfBuilder* _confBuilder;
public:
DummyNetworkProtocolConfGenerator(ConfBuilder* builder) : _confBuilder(builder){};
void createDNPConf()
{
_confBuilder->AddVersionAndInclusion();
_confBuilder->AddSource();
_confBuilder->AddDest();
}
};
int main()
{
DummyNetworkProtocolConfGenerator generator(new DummyNetworkProtocolConfBuilder());
generator.createDNPConf();
return 0;
}