抽象工厂模式的运用.docx
- 文档编号:29469404
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:10
- 大小:33.51KB
抽象工厂模式的运用.docx
《抽象工厂模式的运用.docx》由会员分享,可在线阅读,更多相关《抽象工厂模式的运用.docx(10页珍藏版)》请在冰豆网上搜索。
抽象工厂模式的运用
实验三抽象工厂模式的运用
一、实验目的:
抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
在熟悉抽象工厂模式相关理论知识的基础上,使用抽象工厂模式实现“电脑配置商店”程序。
二、实验要求:
使用抽象工厂模式实现“电脑配置商店”,要求如下:
1.电脑由CPU、主板、显卡、内存、硬盘等配件组合而成。
现电脑配置有两种配置方案。
2.根据配置方案可以显示具体配置信息。
3.根据配置方案可以显示价格。
1、设计并绘制该程序的类图;
2、依照设计的类图使用Java语言编写代码,并实现该程序;
3、除了核心的模式相关类实现外,提供测试环境,按照难度高低,分别是:
a)控制台程序,Client硬编码初始化模式和测试环境,运行结果文本输出;
b)控制台程序,Client初始化测试环境,并根据用户输入运算,运行结果文本输出;
c)设计并实现用户UI,Client初始化测试环境,并根据用户在UI控件上的输入运算,运行结果文本输出;
三、实验内容:
类图
代码
publicabstractclassComputer_store{
Computer_factorycomputer;
publicabstractComputer_factorycreateComputer(Stringtype);
}
Computer_factory.java
publicinterfaceComputer_factory{
publicCpucreateCpu();
publicMainboardcreateMainboard();
publicGraphicsCardcreateGraphicsCard();
publicRamcreateRam();
publicHarddiskcreateHarddisk();
publicvoiddisplayPrice();
}
电脑制造
publicclassPlan_A_factoryimplementsComputer_factory{
publicPlan_A_factory(){
System.out.println("\n配置方案一:
");
}
publicCpucreateCpu(){
//TODO自动生成的方法存根
returnnewPlan_A_Cpu();
}
publicMainboardcreateMainboard(){
//TODO自动生成的方法存根
returnnewPlan_A_Mainboard();
}
publicGraphicsCardcreateGraphicsCard(){
//TODO自动生成的方法存根
returnnewPlan_A_GraphicsCard();
}
publicRamcreateRam(){
//TODO自动生成的方法存根
returnnewPlan_A_Ram();
}
publicHarddiskcreateHarddisk(){
//TODO自动生成的方法存根
returnnewPlan_A_Harddisk();
}
publicvoiddisplayPrice(){
//TODO自动生成的方法存根
System.out.println("RMB:
4000:
");
}
}
publicclassPlan_B_factoryimplementsComputer_factory{
publicPlan_B_factory(){
System.out.println("\n配置方案二:
");
}
publicCpucreateCpu(){
//TODO自动生成的方法存根
returnnewPlan_B_Cpu();
}
publicMainboardcreateMainboard(){
//TODO自动生成的方法存根
returnnewPlan_B_Mainboard();
}
publicGraphicsCardcreateGraphicsCard(){
//TODO自动生成的方法存根
returnnewPlan_B_GraphicsCard();
}
publicRamcreateRam(){
//TODO自动生成的方法存根
returnnewPlan_B_Ram();
}
publicHarddiskcreateHarddisk(){
//TODO自动生成的方法存根
returnnewPlan_B_Harddisk();
}
publicvoiddisplayPrice(){
//TODO自动生成的方法存根
System.out.println("RMB:
5000");
}
}
配置接口
Cpu.java
publicinterfaceCpu{
StringCpu=newString();
}
GraphicsCard.Java
publicinterfaceGraphicsCard{
StringGraphicsCard=newString();
}
Mainboard.java
publicinterfaceMainboard{
StringMainboard=newString();
}
Ram.java
publicinterfaceRam{
StringRam=newString();
}
接口实现
publicclassPlan_A_CpuimplementsCpu{
StringCpu=newString();
publicPlan_A_Cpu(){
Cpu="AMDFX-8350";
System.out.println("Cpu:
"+Cpu);
}
}
publicclassPlan_A_GraphicsCardimplementsGraphicsCard{
StringGraphicsCard=newString();
publicPlan_A_GraphicsCard(){
GraphicsCard="微星GTX970";
System.out.println("GraphicsCard:
"+GraphicsCard);
}
}
publicclassPlan_A_HarddiskimplementsHarddisk{
StringHarddisk=newString();
publicPlan_A_Harddisk(){
Harddisk="IDE";
System.out.println("Harddisk:
"+Harddisk);
}
}
publicclassPlan_A_MainboardimplementsMainboard{
StringMainboard=newString();
publicPlan_A_Mainboard(){
Mainboard="ASUS";
System.out.println("Mainboard:
"+Mainboard);
}
}
publicclassPlan_A_RamimplementsRam{
StringRam=newString();
publicPlan_A_Ram(){
Ram="2g";
System.out.println("Ram:
"+Ram);
}
}
publicclassPlan_B_CpuimplementsCpu{
StringCpu=newString();
publicPlan_B_Cpu(){
Cpu="inteli5";
System.out.println("Cpu:
"+Cpu);
}
}
publicclassPlan_B_GraphicsCardimplementsGraphicsCard{
StringGraphicsCard=newString();
publicPlan_B_GraphicsCard(){
GraphicsCard="影驰GT730";
System.out.println("GraphicsCard:
"+GraphicsCard);
}
}
publicclassPlan_B_HarddiskimplementsHarddisk{
StringHarddisk=newString();
publicPlan_B_Harddisk(){
Harddisk="SATE";
System.out.println("Harddisk:
"+Harddisk);
}
}
publicclassPlan_B_MainboardimplementsMainboard{
StringMainboard=newString();
publicPlan_B_Mainboard(){
Mainboard="GIGABYTE";
System.out.println("Mainboard:
"+Mainboard);
}
}
publicclassPlan_B_RamimplementsRam{
StringRam=newString();
publicPlan_B_Ram(){
Ram="4g";
System.out.println("Ram:
"+Ram);
}
}
电脑基类
publicclassComputerextendsComputer_store{
publicComputer_factorycreateComputer(Stringtype){
Computer_factorycomputer=null;
if(type.equals("配置方案一")){
computer=newPlan_A_factory();
}
elseif(type.equals("配置方案二")){
computer=newPlan_B_factory();
}
computer.createCpu();
computer.createGraphicsCard();
computer.createHarddisk();
computer.createMainboard();
computer.createRam();
computer.displayPrice();
returncomputer;
}
}测试
importjava.util.Scanner;
publicclassTEST{
publicstaticvoidmain(String[]args){
//TODO自动生成的方法存根
Computerc=newComputer();
Scannersc=newScanner(System.in);
for(intp=0;p<1;){
System.out.println("输入选项选择不同的电脑配置方案1,配置方案一2,配置方案二");
Stringk=sc.nextLine();
switch(k){
case"1":
c.createComputer("配置方案一");
break;
case"2":
c.createComputer("配置方案二");
break;
case"Q":
p=2;
sc.close();
break;
default:
System.out.println("更新方案中,请选择方案一或方案二");
break;
}
}
}
}
四、实验总结:
通过本次实验认识了抽象工厂模式用于创建相关或依赖对象的家族,而不需要明确指定具体类。
在熟悉抽象工厂模式相关理论知识的基础上,使用抽象工厂模式实现了“电脑配置商店”程序。
指导教师签名:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 抽象 工厂 模式 运用
![提示](https://static.bdocx.com/images/bang_tan.gif)