首页 > 解决方案 > 一次实例化一堆类的正确方法

问题描述

我有一个类,我需要在其中实例化Main.java一堆其他类说C1.java...。C50.java我想不出一种优雅的方式来实例化 Main 类中的这 50 个类。如果我只是将所有实例化代码放在一个地方,它看起来会非常拥挤和丑陋。今天我有50类要实例化,明天这个计数可以增加到100,然后这种情况会变得更糟。您能否建议一种优雅的方式来实例化所有这些类,而不会使 Main 类挤满实例化代码。我不知道有任何设计模式可以做到这一点。

我正在考虑创建一个需要实例化的类数组并使用反射来实例化它们。

标签: javadesign-patternsreflection

解决方案


答案取决于课程的用途。但是,如果您不介意最终得到一个无序的实例化类集合,那么有一种方法可以使用Reflections库,我想在代码行问题上也有一个简短的方法:

// find out all the classes implementing MyInterface
Set<Class<? extends MyInterface>> subTypes = reflections.getSubTypesOf(MyInterface.class);

// iterate those classes and instntinate them
List<MyInterface> objects = new ArrayList<>();
for (Class<? extends MyInterface> clazz: subtypes) {
    objects.add(clazz.newInstance());
}

无论如何,应该重新设计整个设计。


推荐阅读