您好,欢迎访问三七文档
实验三抽象工厂模式的运用一、实验目的:抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。在熟悉抽象工厂模式相关理论知识的基础上,使用抽象工厂模式实现“电脑配置商店”程序。二、实验要求:使用抽象工厂模式实现“电脑配置商店”,要求如下: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.javapublicinterfaceComputer_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.javapublicinterfaceCpu{StringCpu=newString();}GraphicsCard.JavapublicinterfaceGraphicsCard{StringGraphicsCard=newString();}Mainboard.javapublicinterfaceMainboard{StringMainboard=newString();}Ram.javapublicinterfaceRam{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;p1;){System.out.println(输入选项选择不同的电脑配置方案1,配置方案一2,配置方案二);Stringk=sc.nextLine();switch(k){case1:c.createComputer(配置方案一);break;case2:c.createComputer(配置方案二);break;caseQ:p=2;sc.close();break;default:System.out.println(更新方案中,请选择方案一或方案二);break;}}}}四、实验总结:通过本次实验认识了抽象工厂模式用于创建相关或依赖对象的家族,而不需要明确指定具体类。在熟悉抽象工厂模式相关理论知识的基础上,使用抽象工厂模式实现了“电脑配置商店”程序。指导教师签名:
本文标题:抽象工厂模式的运用
链接地址:https://www.777doc.com/doc-4541955 .html