软件设计实验5:建造者模式

实验5:建造者模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解建造者模式的动机,掌握该模式的结构;

2、能够利用建造者模式解决实际问题

 

[实验任务一]:计算机组装

使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机。

实验要求:

1.画出对应的类图;

 

2. 提交源代码;

  1. 1.Builder  
  2. public abstract class Builder {  
  3. Computer computer = new Computer();  
  4. abstract public void buildZhuJi();  
  5. abstract public void buildYinPan();  
  6. abstract public void buildCpu();  
  7. abstract public void buildNeiCun();  
  8. public Compture getCompture(){  
  9. return compture;  
  10. }  
  11. }  
  12. public class Compture {  
  13. private String cpu;  
  14. private String neiCun;  
  15. private String yinPan;  
  16. private String zhuJi;  
  17. public String getZhuJi() {  
  18. return zhuJi;  
  19. }  
  20. public void setZhuJi(String zhuJi) {  
  21. this.zhuJi = zhuJi;  
  22. }  
  23. public String getYinPan() {  
  24. return yinPan;  
  25. }  
  26. public void setYinPan(String yinPan) {  
  27. this.yinPan = yinPan;  
  28. }  
  29. public String getNeiCun() {  
  30. return neiCun;  
  31. }  
  32. public void setNeiCun(String neiCun) {  
  33. this.neiCun = neiCun;  
  34. }  
  35. public String getCpu() {  
  36. return cpu;  
  37. }
  38. public void setCpu(String cpu) {  
  39. this.cpu = cpu;  
  40. }  
  41. }  
  42. public class Factory {  
  43. private Builder comptureKind;  
  44. public void setCompture(Builder kind) {  
  45. this.comptureKind = kind;  
  46. }  
  47. public Compture construct(){  
  48. comptureKind.buildCpu();  
  49. comptureKind.buildYinPan();  
  50. comptureKind.buildZhuJi();  
  51. comptureKind.buildNeiCun();  
  52. return comptureKind.getCompture();  
  53. }  
  54. }  
  55. public class LapBuilder extends Builder{  
  56. @Override  
  57. public void buildZhuJi() {  
  58. compture.setZhuJi("LZJ");  
  59. }  
  60. @Override  
  61. public void buildYinPan() {  
  62. compture.setYinPan("LYP");  
  63. }  
  64. @Override  
  65. public void buildCpu() {  
  66. compture.setCpu("LC");  
  67. }  
  68. @Override  
  69. public void buildNeiCun() {  
  70. compture.setNeiCun("LNC");  
  71. }  
  72. }  
  73. ④ Store  
  74. public class Store {  
  75. public static void main(String[] args) {  
  76. Builder lap;  
  77. Factory factory=new Factory();  
  78. for (int i = 0; i < 2; i++) {  
  79. if(i==1)  
  80. lap = new LapBuilder();  
  81. else  
  82. lap=new TaiShiBuilder();  
  83. factory.setCompture(lap);  
  84. factory.construct();  
  85. System.out.println(lap.getCompture().getCpu());  
  86. System.out.println(lap.getCompture().getNeiCun());  
  87. System.out.println(lap.getCompture().getYinPan());  
  88. System.out.println(lap.getCompture().getZhuJi());  
  89. }  
  90. }  
  91. }  
  92. public class TaiShiBuilder extends Builder{  
  93. @Override  
  94. public void buildZhuJi() {  
  95. compture.setZhuJi("TZJ");  
  96. }  
  97. @Override  
  98. public void buildYinPan() {  
  99. compture.setYinPan("TYP");  
  100. }  
  101. @Override  
  102. public void buildCpu() {  
  103. compture.setCpu("TC");  
  104. }  
  105. @Override  
  106. public void buildNeiCun() {  
  107. compture.setNeiCun("TNC");  
  108. }  
  109. }  
  110. #include "stdafx.h"  
  111. using namespace std;  
  112. class Compture {  
  113. private:  
  114. string cpu;  
  115. string neiCun;  
  116. string yinPan;  
  117. string zhuJi;  
  118. public:  
  119. string getZhuJi() {  
  120. return zhuJi;  
  121. }  
  122. void setZhuJi(string z) {  
  123. zhuJi = z;  
  124. }  
  125. string getYinPan() {  
  126. return yinPan;  
  127. }  
  128. void setYinPan(string y) {  
  129. yinPan = y;  
  130. }  
  131. string getNeiCun() {  
  132. return neiCun;  
  133. }  
  134. void setNeiCun(string n) {  
  135. neiCun = n;  
  136. }  
  137. string getCpu() {  
  138. return cpu;  
  139. }  
  140. void setCpu(string c) {  
  141. cpu = c;  
  142. }  
  143. };  
  144. class Builder {  
  145. public:  
  146. Compture* compture = new Compture();  
  147. virtual  void buildZhuJi() = 0;  
  148. virtual  void buildYinPan() = 0;  
  149. virtual  void buildCpu() = 0;  
  150. virtual  void buildNeiCun() = 0;  
  151. public:  
  152. Compture* getCompture(){  
  153. return compture;  
  154. }  
  155. };  
  156. class Factory {  
  157. private:  
  158. Builder* comptureKind;  
  159. public:  
  160. void setCompture(Builder* kind) {  
  161. comptureKind = kind;  
  162. }  
  163. Compture* construct(){  
  164. comptureKind->buildCpu();  
  165. comptureKind->buildYinPan();  
  166. comptureKind->buildZhuJi();  
  167. comptureKind->buildNeiCun();  
  168. return comptureKind->getCompture();  
  169. }  
  170. };  
  171. class LapBuilder :public Builder{  
  172. public:  
  173. void buildZhuJi() {  
  174. compture->setZhuJi("LZJ");  
  175. }  
  176. void buildYinPan() {  
  177. compture->setYinPan("LYP");  
  178. }  
  179. void buildCpu() {  
  180. compture->setCpu("LC");  
  181. }  
  182. void buildNeiCun() {  
  183. compture->setNeiCun("LNC");  
  184. }  
  185. };  
  186. class TaiShiBuilder :public Builder{  
  187. public:  
  188. void buildZhuJi() {  
  189. compture->setZhuJi("TZJ");  
  190. }  
  191. void buildYinPan() {  
  192. compture->setYinPan("TYP");  
  193. }  
  194. void buildCpu() {  
  195. compture->setCpu("TC");  
  196. }  
  197. void buildNeiCun() {  
  198. compture->setNeiCun("TNC");  
  199. }  
  200. };  
  201. int main()  
  202. {  
  203. Builder* lap;  
  204. Factory* factory = new Factory();  
  205. for (int i = 0; i < 2; i++) {  
  206. if (i == 1)  
  207. lap = new LapBuilder();  
  208. else  
  209. lap = new TaiShiBuilder();  
  210. factory->setCompture(lap);  
  211. factory->construct();  
  212. cout << lap->getCompture()->getCpu()<<endl;  
  213. cout << lap->getCompture()->getNeiCun()<<endl;  
  214. cout << lap->getCompture()->getYinPan()<<endl;  
  215. cout << lap->getCompture()->getZhuJi() << endl;  
  216. }  
  217. system("pause");  
  218. return 0;  
  219. }  

 

3.注意编程规范。

posted @ 2023-10-31 22:04  STDU_DREAM  阅读(14)  评论(0编辑  收藏  举报