计算机组装
使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机。
实验要求:
- 画出对应的类图;
2. 提交源代码;
3. #include<iostream>
4. #include<string>
5. using namespace std;
6. class Computer{
7. private:
8. string CPU;
9. string RAM;
10. string Hard;
11. string Host;
12. public:
13. string getCPU(){
14. return CPU;
15. }
16. string getRAM(){
17. return RAM;
18. }
19. string getHard(){
20. return Hard;
21. }
22. string getHost(){
23. return Host;
24. }
25. void setCPU(string cpu){
26. CPU=cpu;
27. }
28. void setRAM(string ram){
29. RAM=ram;
30. }
31. void setHard(string hard){
32. Hard=hard;
33. }
34. void setHost(string host){
35. Host=host;
36. }
37. };
38. //抽象建造者类——ComputerBuilder类
39. class ComputerBuilder{
40. protected:
41. Computer computer;
42. public:
43. virtual void buildCPU()=0;
44. virtual void buildRAM()=0;
45. virtual void buildHard()=0;
46. virtual void buildHost()=0;
47. Computer getComputer(){
48. return computer;
49. }
50. };
51. //具体建造者类——LaptopComputerBuilder类
52. class LaptopComputerBuilder:public ComputerBuilder{
53. public:
54. void buildCPU() {
55. computer.setCPU("安装笔记本CPU");
56. }
57. void buildRAM() {
58. computer.setRAM("安装笔记本内存");
59. }
60. void buildHard() {
61. computer.setHard("安装笔记本硬盘");
62. }
63. void buildHost() {
64. computer.setHost("安装笔记本主机");
65. }
66. };
67. //具体建造者类——DesktopComputerBuilder类
68. class DesktopComputerBuilder:public ComputerBuilder{
69. public:
70. void buildCPU() {
71. computer.setCPU("安装台式机CPU");
72. }
73. void buildRAM() {
74. computer.setRAM("安装台式机内存");
75. }
76. void buildHard() {
77. computer.setHard("安装台式机硬盘");
78. }
79. void buildHost() {
80. computer.setHost("安装台式机主机");
81. }
82. };
83. //指挥者类——Director类
84. class Director{
85. private:
86. ComputerBuilder* cb;
87. public:
88. void setComputerBuilder(ComputerBuilder *c){
89. cb=c;
90. }
91. Computer construct(){
92. cb->buildCPU();
93. cb->buildRAM();
94. cb->buildHard();
95. cb->buildHost();
96. return cb->getComputer();
97. }
98. };
99. //测试类
100. int main(){
101. ComputerBuilder* cb=NULL;
102. int i;
103. cout<<"请选择:1.笔记本 2、台式机"<<endl;
104. cin>>i;
105. if(i==1){
106. cb=new LaptopComputerBuilder();
107. }else if(i==2){
108. cb=new DesktopComputerBuilder();
109. }else{
110. cout<<"输入无效!";
111. }
112. Director* dir=new Director();
113. dir->setComputerBuilder(cb);
114. Computer computer=dir->construct();
115. cout<<"计算机组成:"<<endl;
116. cout<<computer.getCPU()<<endl;
117. cout<<computer.getRAM()<<endl;
118. cout<<computer.getHard()<<endl;
119. cout<<computer.getHost()<<endl;
120. delete cb;
121. delete dir;
122. return 0;
123. }
