《设计模式实验4 抽象工厂模式.docx》由会员分享,可在线阅读,更多相关《设计模式实验4 抽象工厂模式.docx(8页珍藏版)》请在三一办公上搜索。
1、 实验报告课程: 设计模式实验 学期: 2010-2011学年 第一学期 任课教师: 专业: 学号: 姓名: 成绩: 实验4 抽象工厂模式1.题目: 使用抽象工厂模式实现一个DIY电脑店,其中的电脑配置有三个种类:学生版、家庭装、豪华版。2.模式设计的UML类图:3.程序源代码:(1)计算机配置工厂接口ComputerConfigurationFactory.java:public interface ComputerConfigurationFactorypublic Cpu createCpu();public Ram createRam();public Mainboard create
2、Mainboard();public Harddisk createHarddisk();public Display createDisplay();(2)计算机配置工厂接口的各个子类:public class StudentComputerConfigurationFactory implements ComputerConfigurationFactorypublic Cpu createCpu() return new StudentCpu(); public Ram createRam() return new StudentRam(); public Mainboard creat
3、eMainboard() return new StudentMainboard(); public Harddisk createHarddisk() return new StudentHarddisk(); public Display createDisplay() return new StudentDisplay(); public class HomeComputerConfigurationFactory implements ComputerConfigurationFactorypublic Cpu createCpu() return new HomeCpu(); pub
4、lic 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 ComputerConfigurati
5、onFactorypublic 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(); (3)电脑各种配置的接
6、口: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 StudentCpu implements
7、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接口的各个子类:public class StudentRam implements Rampublic Stri
8、ng 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; (6)电脑配置Mainboard接口的各个子类:public class StudentMainboard implements Mainboardp
9、ublic String toString() return 铭瑄 MS-M3A890G; public class HomeMainboard implements Mainboardpublic String toString() return 技嘉GA-870A-UD3; public class DeluxeMainboard implements Mainboardpublic String toString() return 华硕Rampage III Extreme; (7)电脑配置Harddisk接口的各个子类:public class StudentHarddisk impl
10、ements Harddiskpublic String toString() return 希捷250GB 7200.12 8M; public class HomeHarddisk implements Harddiskpublic String toString() return 三星500GB 7200转 16M(串/金宝); public class DeluxeHarddisk implements Harddiskpublic String toString() return 希捷Cheetah 15K.7 600GB; (8)电脑配置Display接口的各个子类:public
11、class StudentDisplay implements Displaypublic String toString() return 飞利浦193E1SB; public class HomeDisplay implements Displaypublic String toString() return 三星P2450H; public class DeluxeDisplay implements Displaypublic String toString() return 戴尔UltraSharp 2408WFP; (9)抽象产品计算机类Computer.java:public a
12、bstract class Computer String name;Cpu cpu;Ram ram;Mainboard mainboard;Harddisk harddisk;Display display;public abstract void prepare();public void setName(String name) this.name=name; public String getName() return name; public String getCpu() return cpu.toString(); public String getRam() return ra
13、m.toString(); public String getMainboard() return mainboard.toString(); public String getHarddisk() return harddisk.toString(); public String getDisplay() return display.toString(); (10)抽象产品计算机类的子类PrepareComputer.java:public class PrepareComputer extends ComputerComputerConfigurationFactory Configur
14、ationFactory;public PrepareComputer(ComputerConfigurationFactory ConfigurationFactory)this.ConfigurationFactory = ConfigurationFactory;public void prepare()cpu = ConfigurationFactory.createCpu();ram = ConfigurationFactory.createRam();mainboard = ConfigurationFactory.createMainboard();harddisk = Conf
15、igurationFactory.createHarddisk();display = ConfigurationFactory.createDisplay();(11)抽象计算机店类ComputerStore.java:public abstract class ComputerStore protected abstract Computer createrComputer(String item);public Computer orderComputer(String type)Computer computer = createrComputer(type);computer.pre
16、pare();return computer;(12)抽象计算机店类的子类DIYComputerStore.java:public class DIYComputerStore extends ComputerStoreprotected Computer createrComputer(String item)Computer computer = null;ComputerConfigurationFactory studentConfigurationFactory = new StudentComputerConfigurationFactory();ComputerConfigura
17、tionFactory homeConfigurationFactory = new HomeComputerConfigurationFactory();ComputerConfigurationFactory deluxeConfigurationFactory = new DeluxeComputerConfigurationFactory();if(item.equals(学生版)computer = new PrepareComputer(studentConfigurationFactory);computer.setName(学生版);else if(item.equals(家庭
18、装)computer = new PrepareComputer(homeConfigurationFactory);computer.setName(家庭装);else if(item.equals(豪华版)computer = new PrepareComputer(deluxeConfigurationFactory);computer.setName(豪华版);return computer;(13)实现用户界面的主类DIYStore.java:(由于代码过长,只列出主要部分)public class DIYStore extends javax.swing.JFrame public
19、 DIYStore() super(XXXXX); initComponents(); private void initComponents() jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(种类); buttonGroup1.add(jRadioButton1); jRadioButton1.setText(学生版); buttonGroup1.add(jRadioButton2); jRadioButton2.setText(家庭装); buttonGroup1.add(jRadioButton3); jRa
20、dioButton3.setText(豪华版); jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(配置); jLabel1.setText(CPU:);jLabel2.setText(内存:); jLabel3.setText(主板:);jLabel4.setText(硬盘:); jLabel5.setText(显示器:);jTextField1.setText(); jTextField2.setText();jTextField3.setText(); jTextField4.setText(); jTextFi
21、eld5.setText(); jButton1.setText(退出);jButton2.setText(清空); jButton3.setText(确定); private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) System.exit(0); private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) buttonGroup1.clearSelection(); jTextField1.setText();jTextField2.
22、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)
23、; jTextField4.setText(configuration3); jTextField5.setText(configuration4); public String getConfiguration() ComputerStore DIYstore = new DIYComputerStore(); Computer computer = null; String configuration = new String5; if(jRadioButton1.isSelected() computer = DIYstore.orderComputer(学生版); else if(jR
24、adioButton2.isSelected() computer = DIYstore.orderComputer(家庭装); else if(jRadioButton3.isSelected() computer = DIYstore.orderComputer(豪华版); configuration0 = computer.getCpu(); configuration1 = computer.getRam(); configuration2 = computer.getMainboard(); configuration3 = computer.getHarddisk(); configuration4 = computer.getDisplay(); return configuration; public static void main(String args) java.awt.EventQueue.invokeLater(new Runnable() public void run() new DIYStore().setVisible(true); );8