azure011328

导航

 

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

 

实验2:简单工厂模式

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

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

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

 
   

 


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

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

实验要求:

1.画出对应的类图;

2.提交源代码;

3.注意编程规范。

 

// 抽象类 Person

abstract class Person {

    abstract void eat();

    abstract void sleep();

}

 

// 男性类 Man

class Man extends Person {

    @Override

    void eat() {

        System.out.println("Man is eating.");

    }

 

    @Override

    void sleep() {

        System.out.println("Man is sleeping.");

    }

}

 

// 女性类 Woman

class Woman extends Person {

    @Override

    void eat() {

        System.out.println("Woman is eating.");

    }

 

    @Override

    void sleep() {

        System.out.println("Woman is sleeping.");

    }

}

 

// 机器人类 Robot

class Robot extends Person {

    @Override

    void eat() {

        System.out.println("Robot is charging.");

    }

 

    @Override

    void sleep() {

        System.out.println("Robot is resting.");

    }

}

 

// 工厂类 Nvwa

class Nvwa {

    public Person createPerson(String type) {

        if (type == null) {

            return null;

        }

        if (type.equalsIgnoreCase("M")) {

            return new Man();

        } else if (type.equalsIgnoreCase("W")) {

            return new Woman();

        } else if (type.equalsIgnoreCase("R")) {

            return new Robot();

        } else {

            return null;

        }

    }

}

 

// 主类

public class SimpleFactoryPatternDemo {

    public static void main(String[] args) {

        Nvwa nvwa = new Nvwa();

 

        Person person = nvwa.createPerson("M");

        if (person != null) {

            person.eat();

            person.sleep();

        }

 

        person = nvwa.createPerson("W");

        if (person != null) {

            person.eat();

            person.sleep();

        }

 

        person = nvwa.createPerson("R");

        if (person != null) {

            person.eat();

            person.sleep();

        }

    }

}

posted on 2024-11-04 16:55  淮竹i  阅读(2)  评论(0编辑  收藏  举报