【发布时间】:2010-11-18 15:47:53
【问题描述】:
我有一种情况,我有一个接口,它定义了某个类的行为,以便在我的程序中扮演某个角色,但此时我不能 100% 确定我将写入多少个类填补这个角色。但是,与此同时,我知道我希望用户能够从 GUI 组合/列表框中选择实现他们想要使用的接口的具体类来填补某个角色。我希望 GUI 能够枚举所有可用的类,但我不希望每当我决定实现一个新类来填补该角色时都不必返回并更改旧代码(这可能是几个月后)
我考虑过的一些事情:
- 使用枚举
- 优点:
- 我知道怎么做
- 缺点
- 我必须在添加新类时更新枚举
- 很难迭代
- 优点:
- 在接口中使用某种
static列表对象,并从实现类的定义文件中添加一个新元素- 优点:
- 不必更改旧代码
- 缺点:
- 甚至不确定这是否可能
- 不确定要存储什么样的信息,以便工厂方法可以选择正确的构造函数(可能是字符串和返回指向接口对象的指针的函数指针之间的映射)
- 优点:
我猜这是一个更有经验的程序员可能以前(并且经常)遇到的问题(或类似于问题),并且对于此类问题可能有一个通用的解决方案,这几乎肯定会更好比我能想到的任何东西都要好。那么,我该怎么做呢?
(P.S. 我搜索过,但我发现的只是这个,而且不一样:How do I enumerate all items that implement a generic interface?。看来他已经知道如何解决我试图弄清楚的问题了。)
编辑:我将标题重命名为“我如何跟踪...”,而不仅仅是“我如何枚举...”,因为最初的问题听起来像是我对检查运行时环境更感兴趣,其中因为我真正感兴趣的是编译时簿记。
【问题讨论】:
-
接口是什么意思?是真正的接口类还是类的具体方法?
-
真正的接口类:定义与该接口对象交互的各种方法的集合