JIANGzihao0222

导航

 

软件设计                  石家庄铁道大学信息学院

 

实验2:简单工厂模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解简单工厂模式的动机,掌握该模式的结构;

2、能够利用简单工厂模式解决实际问题

 

[实验任务一]:女娲造人

使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,如果传入参数R,则返回一个Robot对象。请用程序设计实现上述场景。

实验要求:

1. 画出对应的类图;

 

 

2. 提交源代码;

代码:

Client:

package simpleFactory;

import java.util.Scanner;

public class Client {

    public static void main(String[] args) {
        System.out.println("男人:M  女人:W  机器人:R");
        System.out.print("请输入要制作的人:");

        Scanner sc = new Scanner(System.in);
        String type = sc.nextLine();
        try {
            People people;
            people = Factory.peopleMake(type);
            people.makePeople();

        }catch (Exception e){
            System.out.println(e.getMessage());
        }
    }
}

Factory:

package simpleFactory;

public class Factory {
    public static People peopleMake(String brand) throws Exception {

        // 进行比较,忽略大小写
        if(brand.equalsIgnoreCase("M"))
        {
            System.out.println("开始生产男人");
            return new Man();
        } else if (brand.equalsIgnoreCase("W")) {
            System.out.println("开始生产女人");
            return new Woman();
        }else if (brand.equalsIgnoreCase("R")) {
            System.out.println("开始生产机器人");
            return new Robot();
        }else {
            throw new Exception("生产不了");
        }
    }
}

 

Man:

package simpleFactory;

public class Man extends People{
    @Override
    public void makePeople() {
        System.out.println("造了一个男人");
    }
}

 

People:

package simpleFactory;

public abstract class People {
    public abstract void makePeople();
}

 

Robot:

package simpleFactory;

public class Robot extends People{
    @Override
    public void makePeople() {
        System.out.println("造了一个机器人");
    }
}

 

Woman:

package simpleFactory;

public class Woman extends People {
    @Override
    public void makePeople() {
        System.out.println("造了一个女人");
    }
}

运行结果:

 

 

3.注意编程规范。

posted on 2023-11-30 09:14  实名吓我一跳  阅读(53)  评论(0)    收藏  举报