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
| class Computer { private String cpu; private String ram; private String storage; private String gpu;
public void setCpu(String cpu) { this.cpu = cpu; } public void setRam(String ram) { this.ram = ram; } public void setStorage(String storage) { this.storage = storage; } public void setGpu(String gpu) { this.gpu = gpu; }
@Override public String toString() { return "Computer{" + "cpu='" + cpu + '\'' + ", ram='" + ram + '\'' + ", storage='" + storage + '\'' + ", gpu='" + gpu + '\'' + '}'; } }
interface ComputerBuilder { void buildCpu(String cpu); void buildRam(String ram); void buildStorage(String storage); void buildGpu(String gpu); Computer getResult(); }
class ConcreteComputerBuilder implements ComputerBuilder { private Computer computer;
public ConcreteComputerBuilder() { this.computer = new Computer(); }
@Override public void buildCpu(String cpu) { computer.setCpu(cpu); }
@Override public void buildRam(String ram) { computer.setRam(ram); }
@Override public void buildStorage(String storage) { computer.setStorage(storage); }
@Override public void buildGpu(String gpu) { computer.setGpu(gpu); }
@Override public Computer getResult() { return computer; } }
class Director { private ComputerBuilder builder;
public Director(ComputerBuilder builder) { this.builder = builder; }
public Computer constructGamingPC() { builder.buildCpu("Intel i9"); builder.buildRam("32GB DDR4"); builder.buildStorage("1TB NVMe SSD"); builder.buildGpu("NVIDIA RTX 3080"); return builder.getResult(); }
public Computer constructOfficePC() { builder.buildCpu("Intel i5"); builder.buildRam("16GB DDR4"); builder.buildStorage("512GB SSD"); builder.buildGpu("Integrated Graphics"); return builder.getResult(); } }
public class BuilderPatternDemo { public static void main(String[] args) { ComputerBuilder builder = new ConcreteComputerBuilder(); Director director = new Director(builder);
Computer gamingPC = director.constructGamingPC(); System.out.println("Gaming PC: " + gamingPC);
Computer officePC = director.constructOfficePC(); System.out.println("Office PC: " + officePC); } }
|