1. 程式人生 > >設計模式練習(1)——簡單工廠模式

設計模式練習(1)——簡單工廠模式

簡單工廠模式

一、題目:
使用簡單工廠模式模擬女媧(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();  
    }
}

五、執行結果:

結果