開課實驗室: 開課時間: 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();
}
}
運行結果:

