2016-02-13 50 views
1

假設我有一個非常基本的多態性情況。如何動態設置在運行時運行哪個類?在運行時基於邏輯java生成一個類

E.g:

public interface Car { 
     abstract String carName(); 
} 

public class BMW implements Car{ 
    String carlogic(){ 
     // logic 
    } 
} 


public class Audi implements Car{ 
    String carLogic(){ 
     //logic 
    } 
} 

在運行時,我收到一個字符串,它是汽車的名字。例如。 '奧迪','寶馬'等。如果我收到'奧迪',我想打電話給奧迪。卡羅瑞克和'寶馬'寶馬。卡路里。現在簡單的方法是通過開關盒創建這個,但看起來相當混亂?我知道這也可以用反射來完成。但爲了我學習的目的,你會如何處理這個問題?

回答

2

在'正式'應用程序中,我將使用Spring和@Qualifier註釋來選擇正確的實現類。儘管這只是一個測試用例或者簡單的應用程序,但它還是有很大的膨脹。

如果不使用框架,您可能需要使用工廠模式或類似模式。最後

http://howtodoinjava.com/design-patterns/creational/implementing-factory-design-pattern-in-java/

,因爲你似乎是前綴車實現類來匹配輸入字符串,工廠內的反射是個不錯的選擇:您的車的情況非常匹配一個很好的例子可以在這裏找到。 (使用Groovy而不僅僅是Java會使這更容易)。