DesignPatterns/c++/template_method.cc
2025-07-10 22:26:33 +08:00

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(); // 执行完整流程
}