zoukankan      html  css  js  c++  java
  • 实验一 工厂方法和抽象工厂模式设计实验及其Java实现

    开课实验室:                  开课时间: 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();

           }

    }

     运行结果:

  • 相关阅读:
    二进制位运算
    Leetcode 373. Find K Pairs with Smallest Sums
    priority_queue的用法
    Leetcode 110. Balanced Binary Tree
    Leetcode 104. Maximum Depth of Binary Tree
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 64. Minimum Path Sum
    Leetcode 63. Unique Paths II
    经典的递归练习
    案例:java中的基本排序
  • 原文地址:https://www.cnblogs.com/luofay/p/6099034.html
Copyright © 2011-2022 走看看