假设我有一个非常基本的多态性案例。如何动态设置在运行时运行哪个类?
例如:
String
在运行时,我收到一个汽车名称的字符串。例如。 '奥迪','宝马'等。如果我收到'奥迪',我想打电话给Audi.carLogic和'宝马'BMW.carLogic。现在简单的方法是通过开关盒创建这个,但这看起来相当混乱?我知道这也可以使用反射来完成。但是为了我学习的目的,你会怎么做呢?
答案 0 :(得分:2)
在'正式'应用程序中,我将使用Spring和@Qualifier注释来选择正确的实现类。虽然这只是一个测试用例或简单的应用程序,但是还有很多膨胀。
不使用框架,您可能希望使用Factory模式或类似模式。可以在此处找到与您的汽车场景紧密匹配的一个好例子:
https://github.com/btrax/sample-watch-face-official-api
最后,因为您似乎在为汽车实现类添加前缀以匹配输入String,所以工厂内的反射并不是一个糟糕的选择。 (使用Groovy而不仅仅是Java的P.S.会使这更容易)。