




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優質文檔-傾情為你奉上 實驗報告課程: 設計模式實驗 學期: 2010-2011學年 第一學期 任課教師: 專業: 學號: 姓名: 成績: 實驗4 抽象工廠模式1.題目: 使用抽象工廠模式實現一個DIY電腦店,其中的電腦配置有三個種類:學生版、家庭裝、豪華版。2.模式設計的UML類圖:3.程序源代碼:(1)計算機配置工廠接口ComputerConfigurationFactory.java:public interface ComputerConfigurationFactorypublic Cpu createCpu();public Ram createRam();public Mai
2、nboard createMainboard();public Harddisk createHarddisk();public Display createDisplay();(2)計算機配置工廠接口的各個子類:public class StudentComputerConfigurationFactory implements ComputerConfigurationFactorypublic Cpu createCpu() return new StudentCpu(); public Ram createRam() return new StudentRam(); public Ma
3、inboard createMainboard() return new StudentMainboard(); public Harddisk createHarddisk() return new StudentHarddisk(); public Display createDisplay() return new StudentDisplay(); public class HomeComputerConfigurationFactory implements ComputerConfigurationFactorypublic Cpu createCpu() return new H
4、omeCpu(); public Ram createRam() return new HomeRam(); public Mainboard createMainboard() return new HomeMainboard(); public Harddisk createHarddisk() return new HomeHarddisk(); public Display createDisplay() return new HomeDisplay(); public class DeluxeComputerConfigurationFactory implements Comput
5、erConfigurationFactorypublic Cpu createCpu() return new DeluxeCpu(); public Ram createRam() return new DeluxeRam(); public Mainboard createMainboard() return new DeluxeMainboard(); public Harddisk createHarddisk() return new DeluxeHarddisk(); public Display createDisplay() return new DeluxeDisplay()
6、; (3)電腦各種配置的接口:public interface Cpu public String toString();public interface Ram public String toString();public interface Mainboard public String toString();public interface Harddisk public String toString();public interface Display public String toString();(4)電腦配置Cpu接口的各個子類:public class StudentCp
7、u implements Cpupublic String toString() return "Intel 奔騰雙核 E5400(盒)" public class HomeCpu implements Cpupublic String toString() return "Intel 酷睿i5 650(盒)" public class DeluxeCpu implements Cpupublic String toString() return "Intel 酷睿i7 980X(至尊版)" (5)電腦配置Ram接口的各個子類:pub
8、lic class StudentRam implements Rampublic String toString() return "宇瞻2GB DDR3 1333(經典系列)" public class HomeRam implements Rampublic String toString() return "金士頓4GB DDR3 1333(駭客神條套裝)" public class DeluxeRam implements Rampublic String toString() return "海盜船TW3X4G2000C9DF&qu
9、ot; (6)電腦配置Mainboard接口的各個子類:public class StudentMainboard implements Mainboardpublic String toString() return "銘瑄 MS-M3A890G" public class HomeMainboard implements Mainboardpublic String toString() return "技嘉GA-870A-UD3" public class DeluxeMainboard implements Mainboardpublic Str
10、ing toString() return "華碩Rampage III Extreme" (7)電腦配置Harddisk接口的各個子類:public class StudentHarddisk implements Harddiskpublic String toString() return "希捷250GB 7200.12 8M" public class HomeHarddisk implements Harddiskpublic String toString() return "三星500GB 7200轉 16M(串/金寶)&quo
11、t; public class DeluxeHarddisk implements Harddiskpublic String toString() return "希捷Cheetah 15K.7 600GB" (8)電腦配置Display接口的各個子類:public class StudentDisplay implements Displaypublic String toString() return "飛利浦193E1SB" public class HomeDisplay implements Displaypublic String toSt
12、ring() return "三星P2450H" public class DeluxeDisplay implements Displaypublic String toString() return "戴爾UltraSharp 2408WFP" (9)抽象產品計算機類Computer.java:public abstract class Computer String name;Cpu cpu;Ram ram;Mainboard mainboard;Harddisk harddisk;Display display;public abstract v
13、oid prepare();public void setName(String name) =name; public String getName() return name; public String getCpu() return cpu.toString(); public String getRam() return ram.toString(); public String getMainboard() return mainboard.toString(); public String getHarddisk() return harddisk.toStri
14、ng(); public String getDisplay() return display.toString(); (10)抽象產品計算機類的子類PrepareComputer.java:public class PrepareComputer extends ComputerComputerConfigurationFactory ConfigurationFactory;public PrepareComputer(ComputerConfigurationFactory ConfigurationFactory)this.ConfigurationFactory = Configur
15、ationFactory;public void prepare()cpu = ConfigurationFactory.createCpu();ram = ConfigurationFactory.createRam();mainboard = ConfigurationFactory.createMainboard();harddisk = ConfigurationFactory.createHarddisk();display = ConfigurationFactory.createDisplay();(11)抽象計算機店類ComputerStore.java:public abst
16、ract class ComputerStore protected abstract Computer createrComputer(String item);public Computer orderComputer(String type)Computer computer = createrComputer(type);computer.prepare();return computer;(12)抽象計算機店類的子類DIYComputerStore.java:public class DIYComputerStore extends ComputerStoreprotected Co
17、mputer createrComputer(String item)Computer computer = null;ComputerConfigurationFactory studentConfigurationFactory = new StudentComputerConfigurationFactory();ComputerConfigurationFactory homeConfigurationFactory = new HomeComputerConfigurationFactory();ComputerConfigurationFactory deluxeConfigura
18、tionFactory = new DeluxeComputerConfigurationFactory();if(item.equals("學生版")computer = new PrepareComputer(studentConfigurationFactory);computer.setName("學生版");else if(item.equals("家庭裝")computer = new PrepareComputer(homeConfigurationFactory);computer.setName("家庭裝&
19、quot;);else if(item.equals("豪華版")computer = new PrepareComputer(deluxeConfigurationFactory);computer.setName("豪華版");return computer;(13)實現用戶界面的主類DIYStore.java:(由于代碼過長,只列出主要部分)public class DIYStore extends javax.swing.JFrame public DIYStore() super("XXXXX"); initComponen
20、ts(); private void initComponents() jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("種類"); buttonGroup1.add(jRadioButton1); jRadioButton1.setText("學生版"); buttonGroup1.add(jRadioButton2); jRadioButton2.setText("家庭裝"); buttonGroup1.add(jRadioButton3); jRadi
21、oButton3.setText("豪華版"); jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("配置"); jLabel1.setText("CPU:");jLabel2.setText("內存:"); jLabel3.setText("主板:");jLabel4.setText("硬盤:"); jLabel5.setText("顯示器:");jTextField1.setT
22、ext(""); jTextField2.setText("");jTextField3.setText(""); jTextField4.setText(""); jTextField5.setText(""); jButton1.setText("退出");jButton2.setText("清空"); jButton3.setText("確定"); private void jButton1ActionPerformed(java
23、.awt.event.ActionEvent evt) System.exit(0); private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) buttonGroup1.clearSelection(); jTextField1.setText("");jTextField2.setText(""); jTextField3.setText("");jTextField4.setText(""); jTextField5.setText(""); private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) String configuration = getConfiguration(); jTextField1.setText(configuration0); jTextField2.setText(configuration1); jTextField3.setText(configuration2); jTextField4.setText(configuration3); jT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 售后三方協議合同協議
- 員工傭金提成合同協議
- 快遞采購合同協議模板
- 快遞車輛租用合同協議
- 民宿保潔勞務合同協議
- 員工合同協議書賠償范本
- 樓間距協議書范本
- 戀愛賠償協議書范本
- 快遞和電商合作合同協議
- 總包清場勞務合同協議
- 2025教科版六年級科學下冊全冊教案【含反思】
- DB43T-稻-再-油生產技術規程
- 中國慢性冠脈綜合征患者診斷及管理指南2024版解讀
- 課件:《科學社會主義概論(第二版)》第五章
- DB36∕T 1720-2022 牧草裹包青貯技術規程
- 基于BIM技術的建筑工程安全管理應用與探討
- 基于深度學習的電力系統故障恢復與優化方法研究
- 大數據與人工智能營銷知到智慧樹章節測試課后答案2024年秋南昌大學
- 第20課 清朝君主專制的強化(導學案)(原卷版)
- VR游戲中心:虛擬現實的娛樂新趨勢
- 四川省德陽市(2024年-2025年小學六年級語文)統編版小升初模擬((上下)學期)試卷及答案
評論
0/150
提交評論