簡單工廠模式--java代碼實現


簡單工廠模式

  工廠,生產產品的場所。比如農夫山泉工廠,生產農夫山泉礦泉水、茶π等飲料。礦泉水和茶π都屬於飲料,都具有解渴的功能,但是每種飲料給人的感覺是不一樣的。礦泉水和茶π在Java中相當於子類,飲料相當於父類。

  簡單工廠模式,又叫靜態工廠模式,在Java中專門定義一個類來負責創建其他類的實例,被創建的實例通常都具有共同的父類。我們將水果園比作一個工廠,可以生產蘋果,香蕉等水果。每一個蘋果或香蕉都是一個實例,他們的父類都是水果。

  下面用Java語言實現簡單工廠模式

1.簡單工廠模式示意圖

 

 

 

 

 

 

 

 

 

2.創建Fruit接口、Apple類和Banana類

Fruit(interface):

//水果類
public interface Fruit {
    public void get();
}

Apple類:

//蘋果類
public class Apple implements Fruit{
    //實現並重寫父類的get()方法
    public void get() {
        System.out.println("采集蘋果");
    }
}

Banana類:

//香蕉類
public class Banana implements Fruit{
    //實現並重寫父類的get()方法
    public void get() {
        System.out.println("采集香蕉");
    }
}

3.創建水果園,即工廠類,來生產各種水果

FruitFactory:

注意:這里將工廠類和所創建的子類放在同一個包中,方便調用。

package simpleFactory;
//水果園,水果工廠類
public class FruitFactory {    
    /**
     * @param 不同水果的類名稱
     * @return 水果類
     */
    public static Fruit getFruit(String type) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        /*這里通過反射的方式獲取到水果子類的字節碼,即類對象,通過類對象的newInstance()方法創建水果子類
        實例*/
        Class fruit = Class.forName(FruitFactory.class.getPackage().getName()+"."+type);
        return (Fruit) fruit.newInstance();
    }
}

4.現在開始生產水果,創建實例,我們另外建立一個類

MainClass:

package simpleFactory;

public class MainClass {
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        //通過調用工廠類的靜態方法getFruit,創建水果的子類實例。
        Fruit apple = FruitFactory.getFruit("Apple");
        Fruit banana = FruitFactory.getFruit("Banana");
        apple.get();
        banana.get();
    }
}

5.結果:

6.總結:

  模式來源於生活,簡單工廠模式,是一種比較容易理解模式,這種模式在很多框架中都有應用,比如Spring框架中創建實例時,Mybatis中的SqlSessionFactory等。這里通過生活中簡單實例,實現簡單工廠模式。

  參考B站視頻https://www.bilibili.com/video/av34162848


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM