-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGamingPC.java
More file actions
94 lines (80 loc) · 3 KB
/
GamingPC.java
File metadata and controls
94 lines (80 loc) · 3 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
package Architecture;
// Основной класс продукта
public class GamingPC {
private final String cpu;
private final String gpu;
private final int ram;
private final int ssd;
private final boolean liquidCooling;
private final boolean rgbLighting;
private GamingPC(Builder builder) {
this.cpu = builder.cpu;
this.gpu = builder.gpu;
this.ram = builder.ram;
this.ssd = builder.ssd;
this.liquidCooling = builder.liquidCooling;
this.rgbLighting = builder.rgbLighting;
}
@Override
public String toString() {
return "GamingPC{" +
"CPU=" + cpu +
", GPU=" + gpu +
", RAM=" + ram + " GB" +
", SSD=" + ssd + " GB" +
", Жидкое охлаждение=" + (liquidCooling ? "Да" : "Нет") +
", RGB-подсветка=" + (rgbLighting ? "Да" : "Нет") +
'}';
}
// Вложенный Builder
public static class Builder {
private final String cpu;
private final String gpu;
private int ram = 16; // значение по умолчанию
private int ssd = 500; // значение по умолчанию
private boolean liquidCooling = false;
private boolean rgbLighting = false;
// Обязательные параметры в конструкторе
public Builder(String cpu, String gpu) {
this.cpu = cpu;
this.gpu = gpu;
}
public Builder setRam(int ram) {
this.ram = ram;
return this;
}
public Builder setSsd(int ssd) {
this.ssd = ssd;
return this;
}
public Builder setLiquidCooling(boolean liquidCooling) {
this.liquidCooling = liquidCooling;
return this;
}
public Builder setRgbLighting(boolean rgbLighting) {
this.rgbLighting = rgbLighting;
return this;
}
public GamingPC build() {
return new GamingPC(this);
}
}
public static void main(String[] args) {
// Сборка бюджетной конфигурации
GamingPC budgetPC = new GamingPC.Builder("Intel i5", "RTX 4060")
.setRam(16)
.build();
// Сборка топовой конфигурации
GamingPC topPC = new GamingPC.Builder("Intel i9", "RTX 5090")
.setRam(64)
.setSsd(2000)
.setLiquidCooling(true)
.setRgbLighting(true)
.build();
// Вывод результатов
System.out.println("Бюджетная конфигурация:");
System.out.println(budgetPC);
System.out.println("\nТоповая конфигурация:");
System.out.println(topPC);
}
}