2016-02-13 62 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会使这更容易)。