【发布时间】:2016-10-14 01:29:27
【问题描述】:
我正在编写两个程序,比如说一个计算器和一个国际象棋游戏。他们共享大量代码(界面管理、文件打开/保存),我正在尝试找出避免重复代码的最佳实践。
我的想法是创建一个父类,我们称之为Generic_Program,它拥有所有的常用功能,并派生出子类。
我遇到的问题是如何调用派生类的函数而不是父函数。保存配置并退出的具体示例:
class Generic_Program {
void SaveConfig() {
// Write general parameters to a file
}
void Exit() {
SaveConfig(); //First save configuration
// Configuration saved, do exit routines, like make window invisible, etc.
}
}
class Calculator : Generic_Program {
void SaveConfig() {
Generic_Program::SaveConfig(); //Write generic parameters
// Write calculator-specific data, like calculation results, etc.
}
}
class Chess : Generic_Program {
void SaveConfig() {
Generic_Program::SaveConfig(); //Write generic parameters
// Write chess-specific data, like player scores, etc.
}
}
现在,我希望能够从两个程序中调用Exit()。期望的行为是它们都保存通用和特定数据,然后退出。
如果我用上面的代码来做,它会调用父类的 SaveConfig() 从而只保存通用程序数据。
我当然可以为子类编写特定的Exit() 例程,但重点是只编写一次共享代码。
有没有一种方法可以从父类调用子类的SaveConfig()?或者在这种情况下避免重复代码的最佳实践?
【问题讨论】:
-
查找模板函数模式。
-
@drescherjm。搞定了。
-
观察者模式也可以做到这一点......有很多方法可以给猫剥皮。
-
谢谢大家。将“回到学校”并了解虚拟功能。
标签: c++