java - 一次实例化一堆类的正确方法
问题描述
我有一个类,我需要在其中实例化Main.java
一堆其他类说C1.java
...。C50.java
我想不出一种优雅的方式来实例化 Main 类中的这 50 个类。如果我只是将所有实例化代码放在一个地方,它看起来会非常拥挤和丑陋。今天我有50
类要实例化,明天这个计数可以增加到100
,然后这种情况会变得更糟。您能否建议一种优雅的方式来实例化所有这些类,而不会使 Main 类挤满实例化代码。我不知道有任何设计模式可以做到这一点。
我正在考虑创建一个需要实例化的类数组并使用反射来实例化它们。
解决方案
答案取决于课程的用途。但是,如果您不介意最终得到一个无序的实例化类集合,那么有一种方法可以使用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());
}
无论如何,应该重新设计整个设计。
推荐阅读
- python - 使用 python-onvif-zeep 禁用 IP PTZ 摄像机自动对焦
- python - Bamboo 错误 - ImportError:没有名为 pandas 的模块
- java - 如何在 mybatis 中获取字符串数组“String[]”的返回原语
- python - 为什么所有 vilidation 样本输出相同的输出
- sql - Oracle:即使没有约束或索引,重命名列也会出现“ORA-00903:无效表名”错误
- websphere - 如何使用 ADFS 配置 WebSphere Portal、IBM Watson 和 IBM Connections?
- c# - 如何进行回调以删除另一个类中存在的类的实例?
- python - 如何将多个excel表从python连接到mysql
- c++ - 派生类中的虚函数行为
- javascript - 如何将图像放置在 svg 元素的中心?