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