开课实验室: 开课时间: 2016年**月**日 实验报告: 年 月 日
学院名称 |
信息工程学院 |
年级、专业、班 |
|
学号 |
|
姓名 |
|
同组姓名 |
|
|||
课程名称 |
软件架构 |
实验项目名称 |
实验一 工厂方法和抽象工厂模式设计实验 |
指导教师 |
|
|||||||
实验类型 |
验证 √ 综合 □ 设计 □ 创新 □ |
成绩 |
|
|||||||||
教师评语 |
教师签名: 年 月 日 |
|||||||||||
一、实验目的
通过本实验的学习,了解软件体系结构与软件体系设计的基本思想,掌握工厂方法、抽象工厂模式等软件体系结构的设计与实现方法,利用Rose软件绘制软件体系的静态结构图,并利用面向对象的程序设计语言模拟实现工厂方法、抽象工厂模式,为今后软件开发与设计的学习奠定基础。
二、实验环境
实验仪器为PC机一台,安装StarUML软件和MyEclipse软件。
三、实验内容
1、熟悉StarUML软件的界面和基本操作。
2、掌握StarUML软件的基本使用方法,能够运用StarUML软件绘制工厂方法、抽象工厂模式的UML类图和模式结构图。
3、学习利用java语言实现工厂方法、抽象工厂模式,并确保代码运行正确无误。
四、实验步骤
1、熟悉StarUML的常用功能。
2、使用StarUML绘制类图;
3、工厂方法模式设计与实现:“海尔工厂(Haier)生产海尔空调(HaierAirCondition),美的工厂(Midea)生产美的空调(MideaAirCondition) ”。使用Rose绘制工厂方法模式结构图,并运用面向对象编程语言实现该模式。
4、抽象工厂模式设计与实现:“电脑配件生产工厂生产内存、CPU等硬件设备,这些内存、CPU的品牌、其型号并不一定相同。”根据下面的“产品等级结构-产品族”示意图,使用抽象工厂模式实现电脑配件生产过程并绘制相应的类图,并运用面向对象编程语言实现该模式。
工厂方法模式设计与实现:
package AIR;
public interface AIR
{
void work();
}
package AIR;
public class HaierAIR implements AIR
{
public void work()
{
System.out.println("HaierAirCondition working!");
}
}
package AIR;
public class MideaAIR implements AIR
{
public void work()
{
System.out.println("MideaAirCondition working!");
}
}
package AIR;
public interface AIRFactory
{
AIR produceAIR();
}
package AIR;
public class HaierAIRFactory implements AIRFactory
{
public HaierAIR produceAIR()
{
System.out.println("HaierAirCondition produced!");
return new HaierAIR();
}
}
package AIR;
public class MideaAIRFactory implements AIRFactory
{
public MideaAIR produceAIR()
{
System.out.println("MideaAirCondition produced!");
return new MideaAIR();
}
}
package AIR;
public class Test {
public static void main(String[] args) {
AIRFactory AIRfactory=new HaierAIRFactory();
AIR air=AIRfactory.produceAIR();
AIRfactory=new MideaAIRFactory();
air=AIRfactory.produceAIR();
}
}
运行结果:
抽象工厂模式设计与实现:
package Computer;
public interface CPU {
void discribe();
}
package Computer;
public interface RAM {
void discribe();
}
package Computer;
public interface ComputerAccessoriesFactory {
CPU produceCPU();
RAM produceRAM();
}
package Computer;
public class PcCPU implements CPU
{
public void discribe()
{
System.out.println("This is produce the PC_CPU");
}
}
package Computer;
public class PcRAM implements RAM
{
public void discribe()
{
System.out.println("PcRAM");
}
}
package Computer;
public class PcFactory implements ComputerAccessoriesFactory
{
public PcCPU produceCPU() {
System.out.println("PC_CPU produced! >_<");
return new PcCPU();
}
public PcRAM produceRAM() {
System.out.println("PC_RAM produced! >_<");
return new PcRAM();
}
}
package Computer;
public class MacCPU implements CPU
{
public void discribe()
{
System.out.println("This is produce the Mac_CPU");
}
}
package Computer;
public class MacRAM implements RAM
{
public void discribe()
{
System.out.println("MacRAM");
}
}
package Computer;
public class MacFactory implements ComputerAccessoriesFactory{
public MacCPU produceCPU() {
System.out.println("MacCPU produced! ~_~");
return new MacCPU();
}
public MacRAM produceRAM() {
System.out.println("MacARM produced! ~_~");
return new MacRAM();
}
}
package Computer;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
ComputerAccessoriesFactory a = new PcFactory();
ComputerAccessoriesFactory b = new MacFactory();
CPU cpu = a.produceCPU();
RAM ram = b.produceRAM();
cpu.discribe();
ram.discribe();
}
}
运行结果: