1. 程式人生 > >Java的工廠模式(二)

Java的工廠模式(二)

ESS new instant ava 不用 pri nts 改變 pack

  除了上文提到的方法之外,還可以使用Java的反射機制,這樣就能使用類名稱來加載所需要的類。我們只需改變工廠類和驅動類就可以了。

  FruitFactory.java

package com.muggle.project;
//水果工廠
public class FruitFactory {

    public FruitInterface getFruit(String key) {
        if("Banana".equals(key)) {
            return new Banana();        }
        else if ("Apple".equals(key)) {
            
return new Apple(); } else { return null; } } /* 使用類名稱來創建對象 */ public FruitInterface getFruitByClass(String calssName) { try { FruitInterface fruit=(FruitInterface) Class.forName(calssName).newInstance();
return fruit; } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }

  使用動態加載的方法,就可以直接用類名稱來創建對象了。

  TestDrive.java

package com.muggle.project;

public class TestDrive { public static void main(String[] args) { // TODO Auto-generated method stub /* 不用工廠模式的原始方法 */ // FruitInterface banana=new Banana(); // banana.produce(); // FruitInterface apple=new Apple(); // apple.produce(); /* 用工廠模式的原始方法 */ // FruitFactory factory =new FruitFactory(); // FruitInterface banana=factory.getFruit("Banana"); // banana.produce(); FruitFactory factory =new FruitFactory(); FruitInterface banana=factory.getFruitByClass("com.muggle.project.Banana"); banana.produce(); } }

Java的工廠模式(二)