工廠方法模式--java代碼實現


工廠方法模式

  工廠方法模式,對簡單工廠模式進行了升級。我們將水果園比作一個工廠,在簡單工廠模式下,水果園是一個具體的工廠,直接用來生產各種各樣的水果。那么在工廠方法模式下,水果園是一個抽象工廠,那么蘋果樹,香蕉樹等就相當於是具體工廠,生產蘋果、香蕉等水果。每有一種新的水果要生產,則需要種植生產這種水果植物,即創建生產具體水果的工廠。

1.相關術語

  • 抽象工廠:工廠方法模式的核心,任何的工廠類需實現這個接口

  • 具體工廠:實現抽象的工廠接口,生產產品,即實例化相應的對象

2.工廠方法模式示意圖

 

  這里蘋果和香蕉的都實現水果接口類中的get()方法,負責生產蘋果和香蕉的具體工廠實現水果這個抽象工廠接口。在工廠方法模式下如果想要生產新的水果,即創建新的類。比如生產梨子,需要新建一個梨子類實現水果類的get()方法,創建梨子工廠實現水果工廠來生產梨子。

3.創建Fruit接口、Apple類等

Fruit(interface):

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

Apple類:

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

4.創建FruitFactory接口、AppleFactory類等

FruitFactory(interface):

public interface FruitFactory {
    public Fruit getFruit();
}

AppleFactory類:

public class AppleFactory implements FruitFactory {
    @Override
    public Fruit getFruit() {
        return new Apple();
    }
}

5.生產水果

MainClass:

public class MainClass {
    public static void main(String[] args){
        //創建蘋果工廠
        FruitFactory appleFactory = new AppleFactory();
        //通過蘋果工廠生產蘋果實例
        Fruit apple = appleFactory.getFruit();
        apple.get();
        
        //創建香蕉工廠
        FruitFactory bananaFactory = new BananaFactory();
        //通過香蕉工廠生產香蕉實例
        Fruit banana = bananaFactory.getFruit();
        banana.get();
        
        //新添加的梨子工廠
        FruitFactory pearFactory = new PearFactory();
        Fruit pear = pearFactory.getFruit();
        pear.get();
    }
}

  這里用到Java面向對象的三大特性之一--多態。在新建工廠時,由FruitFactory接口指向具體的工廠(AppleFactory)。通過具體的工廠生產水果時,由Fruit接口指向具體的實例對象(Apple)。

6.結果

7.總結

  模式來源於生活。工廠方法模式,在簡單工廠模式的基礎上,對工廠類進行抽象,產生一個抽象工廠接口,將實際創建工作推遲到子類當中。在簡單工廠模式下新引進的產品需要修改核心工廠,在工廠方法模式下不需要修改核心工廠,只需要新建一個類和創建該類的具體工廠,擴展性較強。

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


免責聲明!

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



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