Skip to content

Commit 60a629a

Browse files
committed
Example of Builder Pattern
1 parent 57e6cf7 commit 60a629a

File tree

6 files changed

+145
-0
lines changed

6 files changed

+145
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package creational.builder_pattern;
2+
3+
public class FerrariBuilder implements IVehicleBuilder {
4+
private final Vehicle object = new Vehicle();
5+
6+
@Override
7+
public void SetModel() {
8+
object.model = "Ferrari 360";
9+
}
10+
11+
@Override
12+
public void SetEngine() {
13+
object.engine = "4 Stroke";
14+
}
15+
16+
@Override
17+
public void SetTransmission() {
18+
object.transmission = "280 Km/hr";
19+
}
20+
21+
@Override
22+
public void SetBody() {
23+
object.body = "Glass Fiber";
24+
}
25+
26+
@Override
27+
public void SetAccessories() {
28+
object.accessories.add("Seat Cover");
29+
object.accessories.add("Rear Mirror");
30+
object.accessories.add("Helmet");
31+
}
32+
33+
@Override
34+
public Vehicle GetVehicle() {
35+
return object;
36+
}
37+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package creational.builder_pattern;
2+
3+
public class HondaBuilder implements IVehicleBuilder {
4+
5+
private final Vehicle object = new Vehicle();
6+
7+
@Override
8+
public void SetModel() {
9+
object.model = "Honda";
10+
}
11+
12+
@Override
13+
public void SetEngine() {
14+
object.engine = "4 Stroke";
15+
}
16+
17+
@Override
18+
public void SetTransmission() {
19+
object.transmission = "125 Km/hr";
20+
}
21+
22+
@Override
23+
public void SetBody() {
24+
object.body = "Plastic";
25+
}
26+
27+
@Override
28+
public void SetAccessories() {
29+
object.accessories.add("Seat Cover");
30+
object.accessories.add("Rear Mirror");
31+
object.accessories.add("Helmet");
32+
}
33+
34+
@Override
35+
public Vehicle GetVehicle() {
36+
return object;
37+
}
38+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package creational.builder_pattern;
2+
3+
public interface IVehicleBuilder {
4+
5+
void SetModel();
6+
7+
void SetEngine();
8+
9+
void SetTransmission();
10+
11+
void SetBody();
12+
13+
void SetAccessories();
14+
15+
Vehicle GetVehicle();
16+
}
+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package creational.builder_pattern;
2+
3+
public class Test {
4+
5+
public static void main(String[] args) {
6+
VehicleCreator ferrariCreator = new VehicleCreator(new FerrariBuilder());
7+
ferrariCreator.CreateVehicle();
8+
ferrariCreator.GetVehicle().ShowInfo();
9+
System.out.println("--------------------------------------------------");
10+
VehicleCreator hondaCreator = new VehicleCreator(new HondaBuilder());
11+
hondaCreator.CreateVehicle();
12+
hondaCreator.GetVehicle().ShowInfo();
13+
}
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package creational.builder_pattern;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
public class Vehicle {
7+
8+
public String model, engine, transmission, body;
9+
public List<String> accessories;
10+
11+
public Vehicle() {
12+
accessories = new ArrayList<>();
13+
}
14+
15+
public void ShowInfo() {
16+
System.out.printf("Model : %s\nEngine : %s\nBody : %s\nTransmission : %s\nAccessories : %s\n", model, engine, body, transmission, accessories);
17+
}
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package creational.builder_pattern;
2+
3+
public class VehicleCreator {
4+
5+
private final IVehicleBuilder builder;
6+
7+
public VehicleCreator(IVehicleBuilder build) {
8+
builder = build;
9+
}
10+
11+
public void CreateVehicle() {
12+
builder.SetModel();
13+
builder.SetEngine();
14+
builder.SetBody();
15+
builder.SetTransmission();
16+
builder.SetAccessories();
17+
}
18+
19+
public Vehicle GetVehicle() {
20+
return builder.GetVehicle();
21+
}
22+
}

0 commit comments

Comments
 (0)