C ++中的动态模块类

时间:2016-04-02 14:01:33

标签: c++ dynamic module

简而言之,我创建了一个txt文件转换器。(基本上将文本文件转换为删除注释等到其他文本文件中)

我创建了varius方法来转换文件(例如,只删除"#"符号等)。在将来我想添加其他方法但不触及初始代码。我想在子文件夹中添加另一个类文件并重新编译代码。然后新的转换方法将出现在我的程序中。

我是怎么做到的?

1 个答案:

答案 0 :(得分:0)

基本上,您在类和/或模板参数中使用虚拟成员函数,作为自定义点

对于运行时多态(虚拟成员函数),在Betrand Meyer之后称为 open/closed principle

  

一个类已关闭,因为它可以编译,存储在库中,基线化并由客户端类使用。但它也是开放的,因为任何新类都可以将它用作父级,添加新功能。定义后代类时,无需更改原始内容或干扰其客户端。

对于您的特定情况,将“转换方法”表示为传递给通用文本文件转换器仿函数对象的对象是很自然的,然后在内部使用它。或者,“转换方法”可以是后者的虚函数。这种提供自定义点的过程称为 template method pattern

注意:“模板方法模式”中的“模板”一词不是指C ++模板,而是指可自定义过程的概念,作为每个具体适应的模板。