設計模式練習(1)——簡單工廠模式
阿新 • • 發佈:2019-01-06
簡單工廠模式
一、題目:
使用簡單工廠模式模擬女媧(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();
}
}
五、執行結果: