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
package ruanjiansheji.shiyan5;
 
public class Computer {
    private String CPU;
    private String RAM;
    private String Hard;
    private String Host;
 
    public String getCPU() {
        return CPU;
    }
 
    public void setCPU(String CPU) {
        this.CPU = CPU;
    }
 
    public String getRAM() {
        return RAM;
    }
 
    public void setRAM(String RAM) {
        this.RAM = RAM;
    }
 
    public String getHard() {
        return Hard;
    }
 
    public void setHard(String hard) {
        Hard = hard;
    }
 
    public String getHost() {
        return Host;
    }
 
    public void setHost(String host) {
        Host = host;
    }
 
    @Override
    public String toString() {
        return "Computer{" +
                "CPU='" + CPU + '\'' +
                ", RAM='" + RAM + '\'' +
                ", Hard='" + Hard + '\'' +
                ", Host='" + Host + '\'' +
                '}';
    }
}
package ruanjiansheji.shiyan5;
 
public abstract class ComputerBuilder {
    protected Computer computer=new Computer();
    public abstract void buildCPU();
    public abstract void buildRAM();
    public abstract void buildHard();
    public abstract void buildHost();
    public Computer getComputer()
    {
        return computer;
    }
}
package ruanjiansheji.shiyan5;
 
public class DesktopComputer extends ComputerBuilder{
    public void buildCPU() {
        computer.setCPU("台式机CPU");
    }
    public void buildRAM() {
        computer.setRAM("台式机内存");
    }
    public void buildHard() {
        computer.setHard("台式机硬盘");
    }
    public void buildHost() {
        computer.setHost("台式机主机");
    }
}
package ruanjiansheji.shiyan5;
 
public class Director {
    private ComputerBuilder computerBuilder;
    public void setComputerBuilder(ComputerBuilder c){
        computerBuilder=c;
    }
    public Computer construct(){
        computerBuilder.buildCPU();
        computerBuilder.buildRAM();
        computerBuilder.buildHard();
        computerBuilder.buildHost();
        return computerBuilder.getComputer();
    }
}
package ruanjiansheji.shiyan5;
 
public class LaptopComputer extends  ComputerBuilder{
    public void buildCPU() {
        computer.setCPU("笔记本CPU");
    }
    public void buildRAM() {
        computer.setRAM("笔记本内存");
    }
    public void buildHard() {
        computer.setHard("笔记本硬盘");
    }
    public void buildHost() {
        computer.setHost("笔记本主机");
    }
}
package ruanjiansheji.shiyan5;
 
public class main {
    public static void main(String[] args) {
        Director director=new Director();
        ComputerBuilder cb;
        System.out.println("安装笔记本");
        cb=new LaptopComputer();
        director.setComputerBuilder(cb);
        Computer Laptop = director.construct();
        System.out.println(Laptop.toString());
 
 
 
        System.out.println("安装台式机");
        cb=new DesktopComputer();
        director.setComputerBuilder(cb);
        Computer Desktop = director.construct();
        System.out.println(Desktop.toString());
    }