-
Notifications
You must be signed in to change notification settings - Fork 1k
/
Copy pathBuilderPatternExample2.cs
131 lines (109 loc) · 3.13 KB
/
BuilderPatternExample2.cs
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
//-------------------------------------------------------------------------------------
// BuilderPatternExample2.cs
//-------------------------------------------------------------------------------------
using UnityEngine;
using System.Collections;
namespace BuilderPatternExample2
{
public class BuilderPatternExample2 : MonoBehaviour
{
void Start()
{
IRobotBuilder oldRobot = new OldRobotBuilder();
RobotEngineer engineer = new RobotEngineer(oldRobot);
engineer.MakeRobot();
Robot firstRobot = engineer.GetRobot();
Debug.Log("First Robot built");
Debug.Log(firstRobot.ToStringEX());
}
}
public interface IRobotPlan
{
void SetRobotHead(string head);
void SetRobotTorso(string torso);
void SetRobotArms(string arms);
void SetRobotLegs(string legs);
}
public class Robot : IRobotPlan
{
public string head { get; protected set; }
public string torso { get; protected set; }
public string arms { get; protected set; }
public string legs { get; protected set; }
public void SetRobotHead(string head)
{
this.head = head;
}
public void SetRobotTorso(string torso)
{
this.torso = torso;
}
public void SetRobotArms(string arms)
{
this.arms = arms;
}
public void SetRobotLegs(string legs)
{
this.legs = legs;
}
public string ToStringEX()
{
return "Head: " + this.head + ", torso: " + this.torso + ", Arms: " + arms + ", legs: " + legs;
}
}
public interface IRobotBuilder
{
Robot GetRobot();
void BuildRobotHead();
void BuildRobotTorso();
void BuildRobotArms();
void BuildRobotLegs();
}
public class OldRobotBuilder : IRobotBuilder
{
protected Robot robot { get; set; }
public OldRobotBuilder()
{
this.robot = new Robot();
}
public Robot GetRobot()
{
return robot;
}
public void BuildRobotHead()
{
this.robot.SetRobotHead("Old Head");
}
public void BuildRobotTorso()
{
this.robot.SetRobotTorso("Old Torso");
}
public void BuildRobotArms()
{
this.robot.SetRobotArms("Old Arms");
}
public void BuildRobotLegs()
{
this.robot.SetRobotLegs("Roller Skates");
}
}
public class RobotEngineer
{
public IRobotBuilder robotBuilder { get; protected set; }
public RobotEngineer(IRobotBuilder builder)
{
this.robotBuilder = builder;
}
public Robot GetRobot()
{
return this.robotBuilder.GetRobot();
}
public void MakeRobot()
{
this.robotBuilder.BuildRobotHead();
this.robotBuilder.BuildRobotTorso();
this.robotBuilder.BuildRobotArms();
this.robotBuilder.BuildRobotLegs();
}
}
}