软件设计 石家庄铁道大学信息学院
实验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();
}
}
}