Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit6458e31

Browse files
authored
Merge pull requestTheAlgorithms#757 from abhijay94/Development
Added Builder Design pattern implementation in Java and its test
2 parents21f8200 +b532d70 commit6458e31

File tree

2 files changed

+114
-0
lines changed

2 files changed

+114
-0
lines changed
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
packagesrc.main.java.com.designpatterns.builderpattern;
2+
3+
/**
4+
* The Builder is a design pattern designed to provide a flexible solution to various object creation problems in
5+
* object-oriented programming. The intent of the Builder design pattern is to separate the construction of a complex
6+
* object from its representation.
7+
*
8+
* @see <a href="https://en.wikipedia.org/wiki/Builder_pattern">Builder Pattern</a>
9+
*/
10+
11+
publicclassDesktop {
12+
privateStringCPU;
13+
privateStringRAM;
14+
15+
privatebooleanisGraphicCardEnabled;
16+
privateStringoperatingSystem;
17+
privateintdiskSizeGB;
18+
privateStringgraphicCard;
19+
20+
privateDesktop(DesktopBuilderbuilder) {
21+
this.CPU =builder.CPU;
22+
this.RAM =builder.RAM;
23+
this.isGraphicCardEnabled =builder.isGraphicCardEnabled;
24+
this.operatingSystem =builder.operatingSystem;
25+
this.diskSizeGB =builder.diskSizeGB;
26+
this.graphicCard =builder.graphicCard;
27+
}
28+
29+
/**
30+
* Builder class for the above Desktop class. Constructs the Desktop by invoking the Desktop class constructor and
31+
* allows access to set optional fields in the Desktop class.
32+
*/
33+
publicstaticclassDesktopBuilder {
34+
privateStringCPU;
35+
privateStringRAM;
36+
privatebooleanisGraphicCardEnabled;
37+
privateStringoperatingSystem;
38+
privateintdiskSizeGB;
39+
privateStringgraphicCard;
40+
41+
publicDesktopBuilder(StringCPU,StringRAM) {
42+
this.CPU =CPU;
43+
this.RAM =RAM;
44+
}
45+
46+
publicDesktopBuildersetGraphicCardEnabled(booleangraphicCardEnabled) {
47+
this.isGraphicCardEnabled =graphicCardEnabled;
48+
returnthis;
49+
}
50+
51+
publicDesktopBuildersetOperatingSystem(StringoperatingSystem) {
52+
this.operatingSystem =operatingSystem;
53+
returnthis;
54+
}
55+
56+
publicDesktopBuildersetDiskSizeGB(intdiskSize) {
57+
this.diskSizeGB =diskSize;
58+
returnthis;
59+
}
60+
61+
publicDesktopBuildersetGraphicCard(StringgraphicCard) {
62+
this.graphicCard =graphicCard;
63+
returnthis;
64+
}
65+
66+
publicDesktopbuild() {
67+
returnnewDesktop(this);
68+
}
69+
}
70+
71+
@Override
72+
publicStringtoString() {
73+
return"Desktop{" +
74+
"CPU='" +CPU +'\'' +
75+
", RAM='" +RAM +'\'' +
76+
", isGraphicCardEnabled=" +isGraphicCardEnabled +
77+
", operatingSystem='" +operatingSystem +'\'' +
78+
", diskSizeGB=" +diskSizeGB +
79+
", graphicCard='" +graphicCard +'\'' +
80+
'}';
81+
}
82+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
packagesrc.test.java.com.designpatterns.builderpattern;
2+
3+
importorg.junit.Assert;
4+
importorg.junit.Test;
5+
importsrc.main.java.com.designpatterns.builderpattern.Desktop;
6+
7+
publicclassDesktopBuilderTest {
8+
privatefinalStringconfigOne ="Desktop{CPU='Intel i7', RAM='Corsair Vengeance 3000', isGraphicCardEnabled=true" +
9+
", operatingSystem='Windows 10', diskSizeGB=16, graphicCard='NVIDIA GTX 1080'}";
10+
privatefinalStringconfigTwo ="Desktop{CPU='Intel i5', RAM='HyperX Fury v5', isGraphicCardEnabled=true, " +
11+
"operatingSystem='Red Hat Enterprise', diskSizeGB=16, graphicCard='NVIDIA RTX 2080'}";
12+
13+
@Test
14+
publicvoidtestDesktopBuilder() {
15+
Desktopd1 =newDesktop.DesktopBuilder("Intel i7","Corsair Vengeance 3000")
16+
.setDiskSizeGB(16)
17+
.setGraphicCard("NVIDIA GTX 1080")
18+
.setGraphicCardEnabled(true)
19+
.setOperatingSystem("Windows 10")
20+
.build();
21+
Assert.assertEquals(d1.toString(),configOne);
22+
23+
Desktopd2 =newDesktop.DesktopBuilder("Intel i5","HyperX Fury v5")
24+
.setDiskSizeGB(16)
25+
.setGraphicCard("NVIDIA RTX 2080")
26+
.setGraphicCardEnabled(true)
27+
.setOperatingSystem("Red Hat Enterprise")
28+
.build();
29+
Assert.assertEquals(d2.toString(),configTwo);
30+
}
31+
32+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp