您的位置:首页 > 编程语言 > Java开发

设计模式练习(1)——简单工厂模式

2017-01-18 17:04 330 查看

简单工厂模式

一、题目:

使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W。则返回一个对象Woman,用java语言实现该场景。现在需要增加一个新的Robot类,如果传入参数R,则返回一个Robot对象,对代码进行修改并注意女娲的变化。

(1)绘制简单工厂模式结构视图;

(2)请绘制该实例类图,并代码实现。

二、所用模式结构视图:



三、实例类图:



四、实例实现代码:

(因为区分,所以在类的前面加了Gj19)

抽象产品类–造人类:

package SimpleFactoryPattern;
/**
* 抽象产品类--造人类
* @author gong
*
*/
public abstract class Gj19Person {
public void run(){}
public void eat(){}

}


具体产品类–男人类:

package SimpleFactoryPattern;
/**
* 具体产品类--男人类
* @author gong
*
*/
public class Gj19Man extends Gj19Person{

@Override
public void eat() {
System.out.println("男人吃东西..");
super.eat();
}
@Override
public void run() {
System.out.println("男人跑步..");
super.run();
}
}


具体产品类–女人类:

package SimpleFactoryPattern;
/**
* 具体产品类--女人类
* @author gong
*
*/
public class Gj19Woman extends Gj19Person{
@Override
public void eat() {
System.out.println("女人吃东西..");
super.eat();
}
@Override
public void run() {
System.out.println("女 人跑步..");
super.run();
}
}


具体产品类–机器人类:

package SimpleFactoryPattern;
/**
* 具体产品类--机器人类
* @author gong
*
*/
public class Gj19Robot extends Gj19Person{
@Override
public void eat() {
System.out.println("机器人吃东西..");
super.eat();
}
@Override
public void run() {
System.out.println("机器人跑步..");
super.run();
}
}


工厂类–女娲类:

package SimpleFactoryPattern;
/**
* 工厂类--女娲类
* @author gong
*
*/
public class Gj19Nvwa {
public static Gj19Person getPerson(String people){
Gj19Person gj19Person=null;
if(people.equalsIgnoreCase("M")){
gj19Person = new Gj19Man();
}else if(people.equalsIgnoreCase("W")){
gj19Person = new Gj19Woman();
}else if(people.equalsIgnoreCase("R")){
gj19Person = new Gj19Robot();
}
return gj19Person;
}
}


女娲造人的测试:

package SimpleFactoryPattern;
/**
* 女娲造人的测试
* @author gong
*
*/
public class Gj19NvwaMakePerson {
public static void main(String[] args) {
Gj19Person gj19Person;
gj19Person = Gj19Nvwa.getPerson("M");  //女娲造男人
gj19Person.eat();
gj19Person = Gj19Nvwa.getPerson("W"); //女娲造女人
gj19Person.eat();
gj19Person = Gj19Nvwa.getPerson("R"); //女娲造机器人
gj19Person.eat();
}
}


五、运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息