![]() |
1
1
C++是一种缺乏反射的静态语言,因此你将 有 要以这种或那种方式枚举类,可以是类名到工厂函数的映射、创建所有类的显式函数,或cppunit样式的“注册”(与将它们放入静态映射中相同)。 用最简单最容易改变的方法去做 你是说你最终会有成百上千个,不是现在。 By the time you have hundreds of them, your design will have changed completely 如果这样简单的代码不再适合这个任务,那么它也更容易被丢弃,因为你只会在一个复杂的设计中投入资金,并给它添加一些乱七八糟的东西,而不是扔掉 当您的代码库成熟时,您将确切地知道您需要什么样的安排,但是现在, 尽可能做最简单的事情 . 附言
|
![]() |
2
1
对于有这么多类的东西,我会使用一个注册表,它允许您实例化所有注册的类。我写道 some sample code 它显示了工厂函数和注册模式(您需要添加对注册函数进行迭代的功能)。
注册模式的唯一问题是编译器有时会 智能并删除它认为未使用的代码。解决方法各不相同。 |
![]() |
3
0
我将管理一个可能的解析器类列表(例如按名称),并使用 factory pattern 创建具体的实现。解析器类应有一个公共接口,使您能够使用相同的代码来传递信息和处理数据。
不用一个接一个地传递,你也可以分块地传递:从输入中读取几行,然后把它交给所有的解析器。 |
![]() |
AstralHex · 矩阵乘法代码工作不正常 5 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 5 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 5 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 5 月前 |