我考虑了一些事情:
- 使用枚举
- 优点:
- 我知道如何做
- 缺点:
- 当我添加新类时,必须更新枚举
- 枚举遍历起来很繁琐
- 优点:
- 在接口中使用某种类型的
static
列表对象,并从实现类的定义文件中添加一个新元素- 优点:
- 不需要更改旧代码
- 缺点:
- 甚至不确定是否可能
- 不确定要存储什么样的信息,以便工厂方法可以选择适当的构造函数(也许是字符串和返回指向接口对象的指针的函数指针之间的映射)
- 优点:
我猜这可能是更有经验的程序员经常遇到的问题(或类似问题),并且对于这种问题可能有一种常见的解决方案,肯定比我能想出的任何东西都要好。那么,我该怎么做呢?
(附言:我搜索过了,但找到的只有这个如何枚举所有实现泛型接口的项?,而且它并不相同。看起来他已经知道如何解决我正在尝试解决的问题。)
编辑:我将标题改为“如何跟踪...”而不仅仅是“如何枚举...”,因为原始问题听起来更像是我对运行时环境进行了更多的检查,而我真正感兴趣的是编译时的簿记。