33 lines
829 B
C++
33 lines
829 B
C++
/**
|
|
* @name 模板方法模式
|
|
* @brief: 定义算法框架,允许子类重写特定步骤
|
|
* @note 场景:数据解析流程、数据库操作模板、游戏主循环
|
|
*/
|
|
|
|
class DataExporter {
|
|
public:
|
|
// 模板方法 (final 阻止子类覆盖整个算法)
|
|
void exportData() final {
|
|
openDataSource();
|
|
convertData(); // 子类可重写的步骤
|
|
closeDataSource();
|
|
}
|
|
protected:
|
|
virtual void convertData() = 0; // 纯虚函数
|
|
void openDataSource() { /* 通用实现 */ }
|
|
void closeDataSource() { /* 通用实现 */ }
|
|
};
|
|
|
|
class CSVExporter : public DataExporter {
|
|
protected:
|
|
void convertData() override {
|
|
// CSV格式转换逻辑
|
|
}
|
|
};
|
|
|
|
// 使用
|
|
int main()
|
|
{
|
|
DataExporter* exporter = new CSVExporter();
|
|
exporter->exportData(); // 执行完整流程
|
|
} |