设计模式实验4抽象工厂模式_第1页
设计模式实验4抽象工厂模式_第2页
设计模式实验4抽象工厂模式_第3页
设计模式实验4抽象工厂模式_第4页
设计模式实验4抽象工厂模式_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验报告课程:

设计模式实验

学期:

2010-2011

学年 第一学期

任课教师:专业:

学号:

姓名:

成绩:实验4 抽象工厂模式题目:使用抽象工厂模式实现一个 DIY电脑店,其中的电脑配置有三个种类:学生版、家庭装、豪华版。模式设计的UML类图:程序源代码:1)计算机配置工厂接口ComputerConfigurationFactory.java:public interface ComputerConfigurationFactory{public CpucreateCpu();public RamcreateRam();public MainboardcreateMainboard();public HarddiskcreateHarddisk();public DisplaycreateDisplay();}(2)计算机配置工厂接口的各个子类:publicclassStudentComputerConfigurationFactoryimplementsComputerConfigurationFactory{publicCpucreateCpu(){returnnewStudentCpu();}publicRamcreateRam(){returnnewStudentRam();}publicMainboardcreateMainboard(){returnnewStudentMainboard();}publicHarddiskcreateHarddisk(){returnnewStudentHarddisk();}publicDisplaycreateDisplay(){returnnewStudentDisplay();}}publicclassHomeComputerConfigurationFactoryimplementsComputerConfigurationFactory{publicCpucreateCpu(){returnnewHomeCpu();}publicRamcreateRam(){returnnewHomeRam();}publicMainboardcreateMainboard(){returnnewHomeMainboard();}publicHarddiskcreateHarddisk(){returnnewHomeHarddisk();}publicDisplaycreateDisplay(){returnnewHomeDisplay();}}public class DeluxeComputerConfigurationFactoryComputerConfigurationFactory

implements{publicCpucreateCpu(){returnnewDeluxeCpu();}publicRamcreateRam(){returnnewDeluxeRam();}publicMainboardcreateMainboard(){returnnewDeluxeMainboard();}publicHarddiskcreateHarddisk(){returnnewDeluxeHarddisk();}publicDisplaycreateDisplay(){returnnewDeluxeDisplay();}}(3)电脑各种配置的接口:public

interface

Cpu{public

StringtoString();}public

interface

Ram{public StringtoString();}public

interface

Mainboard{public

StringtoString();}public

interface

Harddisk{public StringtoString();}public

interface

Display{public StringtoString();}(4)电脑配置Cpu接口的各个子类:public

class

StudentCpu

implements Cpu{public StringtoString(){ return "Intel 奔腾双核

E5400(

盒)";

}}public

class

HomeCpuimplements

Cpu{public StringtoString(){ return "Intel 酷睿i5650

(盒)";

}}public

class DeluxeCpu implements Cpu{public StringtoString(){ return "Intel 酷睿i7980X

(至尊版)

";}}(5)电脑配置Ram接口的各个子类:public

class

StudentRam

implements

Ram{public StringtoString(){ return "宇瞻2GBDDR31333(经典系列)

";

}}public

class

HomeRamimplements

Ram{public StringtoString(){ return "金士顿4GBDDR31333(骇客神条套装

)";}}public

class

DeluxeRam

implements

Ram{public StringtoString(){ return "海盗船TW3X4G2000C9DF"; }}(6)电脑配置Mainboard接口的各个子类:public

class StudentMainboard

implements Mainboard{public StringtoString(){ return "铭瑄MS-M3A890G";

}}public{

class HomeMainboard implements Mainboardpublic{

StringtoString()return "技嘉GA-870A-UD3"; }}public

class DeluxeMainboard

implements Mainboard{public StringtoString(){ return "华硕RampageIIIExtreme"

; }}(7)电脑配置

Harddisk

接口的各个子类:public

class

StudentHarddisk

implements

Harddisk{public StringtoString(){ return "希捷250GB7200.128M";

}}public

class

HomeHarddisk

implements

Harddisk{public StringtoString(){ return "三星500GB7200转

16M(串/金宝)";

}}public

class DeluxeHarddisk

implements

Harddisk{public StringtoString(){ return "希捷Cheetah15K.7600GB"

;

}}(8)电脑配置Display接口的各个子类:public

class

StudentDisplay

implements Display{public StringtoString(){ return "飞利浦193E1SB"; }}public

class

HomeDisplay

implements Display{public{

StringtoString()return "三星P2450H"; }}public

class

DeluxeDisplay

implements Display{public StringtoString(){ return "戴尔UltraSharp2408WFP" ; }}9)抽象产品计算机类Computer.java:public abstract class Computer{String name;Cpucpu;Ramram;Mainboard mainboard;Harddisk harddisk;Display display ;public abstract voidprepare();public voidsetName(Stringname){=name;}public StringgetName(){returnname;}publicStringgetCpu(){returncpu.toString();}publicStringgetRam(){returnram.toString();}publicStringgetMainboard(){returnmainboard.toString();}publicStringgetHarddisk(){returnharddisk.toString();}publicStringgetDisplay(){returndisplay.toString();}}10)抽象产品计算机类的子类PrepareComputer.java:public class PrepareComputer extendsComputer{ComputerConfigurationFactory ConfigurationFactory ;public PrepareComputer(ComputerConfigurationFactoryConfigurationFactory){this.ConfigurationFactory

=ConfigurationFactory;}public{

voidprepare()cpu= ConfigurationFactory .createCpu();ram= ConfigurationFactory .createRam();mainboard= ConfigurationFactory .createMainboard();harddisk =ConfigurationFactory .createHarddisk();display = ConfigurationFactory .createDisplay();}}11)抽象计算机店类ComputerStore.java:public

abstract

class ComputerStore{protected abstract ComputercreaterComputer(Stringitem);public ComputerorderComputer(Stringtype){Computercomputer=createrComputer(type);;computer.prepare();return computer;}}12)抽象计算机店类的子类DIYComputerStore.java:publicclassDIYComputerStoreextendsComputerStore{protectedComputercreaterComputer(Stringitem){Computercomputer=null;ComputerConfigurationFactorystudentConfigurationFactory=newStudentComputerConfigurationFactory();ComputerConfigurationFactoryhomeConfigurationFactory=newHomeComputerConfigurationFactory();ComputerConfigurationFactorydeluxeConfigurationFactory=newDeluxeComputerConfigurationFactory();if(item.equals("学生版")){computer=newPrepareComputer(studentConfigurationFactory);}computer.setName("学生版");elseif(item.equals("家庭装")){computer=newPrepareComputer(homeConfigurationFactory);computer.setName("家庭装");}else if(item.equals( "豪华版")){computer= newPrepareComputer(deluxeConfigurationFactory);computer.setName( "豪华版");}return computer;}}13)实现用户界面的主类DIYStore.java:(由于代码过长,只列出主要部分)public class DIYStore extendsjavax.swing.JFrame{public DIYStore(){super("XXXXX");initComponents();}private voidinitComponents(){ jPanel1.setBorder(javax.swing.BorderFactory. createTitledBorder ("种类"));buttonGroup1.add(jRadioButton1 );jRadioButton1 .setText( "学生版");buttonGroup1.add(jRadioButton2 );jRadioButton2 .setText( "家庭装");buttonGroup1.add(jRadioButton3 );jRadioButton3 .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( ""); jTextField5 .setText( "");jButton1 .setText( "退出");jButton2 .setText( "清空");jButton3 .setText( "确定");}private voidjButton1ActionPerformed(java.awt.event.ActionEventevt){System. exit(0);}private voidjButton2ActionPerformed(java.awt.event.ActionEventevt){buttonGroup1.clearSelection();jTextField1 .setText( "");jTextField2 .setText( "");jTextField3 .setText( "");jTextField4 .setText( "");jTextField5 .setText( "");}privatevoidjButton3ActionPerformed(java.awt.event.ActionEventevt){String[]configuration=getConfiguration();jTextField1 .setText(configuration[0]);jTextField2 .setText(configuration[1]);jTextField3 .setText(configuration[2]);jTextField4 .setText(configuration[3]);jTextField5 .setText(conf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论