工廠方法模式
工廠方法模式,對簡單工廠模式進行了升級。我們將水果園比作一個工廠,在簡單工廠模式下,水果園是一個具體的工廠,直接用來生產各種各樣的水果。那么在工廠方法模式下,水果園是一個抽象工廠,那么蘋果樹,香蕉樹等就相當於是具體工廠,生產蘋果、香蕉等水果。每有一種新的水果要生產,則需要種植生產這種水果植物,即創建生產具體水果的工廠。
1.相關術語
-
抽象工廠:工廠方法模式的核心,任何的工廠類需實現這個接口
-
具體工廠:實現抽象的工廠接口,生產產品,即實例化相應的對象
2.工廠方法模式示意圖
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)。
7.總結