您的位置:首页 > 新闻 > 会展 > 前端跟后端哪个就业难_湖南张家界_制作网页的软件有哪些_网络营销是什么意思?

前端跟后端哪个就业难_湖南张家界_制作网页的软件有哪些_网络营销是什么意思?

2025/4/16 13:14:08 来源:https://blog.csdn.net/Interview_TC/article/details/147186984  浏览:    关键词:前端跟后端哪个就业难_湖南张家界_制作网页的软件有哪些_网络营销是什么意思?
前端跟后端哪个就业难_湖南张家界_制作网页的软件有哪些_网络营销是什么意思?

🔄 回顾 Day 9:命令模式要点

在 Day 9 中,我们学习了命令模式(Command Pattern):

  • 用于将“请求”封装为对象,实现请求与执行者的解耦。
  • 可支持操作的撤销、重做、批量执行等复杂行为控制。
  • 在遥控器控制、任务队列、UI 事件系统中广泛应用。

而今天的模板方法模式,强调的是:

在一个抽象流程中定义“固定结构”,而将可变步骤交给子类来实现。


一、模板方法模式是什么?

模板方法模式(Template Method Pattern)是一种行为型设计模式,用于:

  • 定义一套算法骨架,在抽象类中写好执行流程
  • 让子类去“定制”部分步骤(而不是整体流程)
    在这里插入图片描述

✅ 关键点:

不变的流程 + 可变的步骤


二、适用场景

场景类型示例描述
流程固定的算法骨架报表导出流程、文档解析、代码生成等
钩子函数调用场景操作系统回调、生命周期钩子
多子类复用共同行为数据抓取流程、文件处理、协议接入

三、结构图(UML)

+---------------------+
| AbstractClass       |
+---------------------+
| +templateMethod()   |
| +step1()            |
| +step2()            |
+---------------------+/\/  \
+-------------------+   +-------------------+
| ConcreteClassA     |   | ConcreteClassB     |
+-------------------+   +-------------------+
| +step2() override  |   | +step2() override  |
+-------------------+   +-------------------+

四、C++ 实现:数据导出系统

我们实现一个数据导出器:支持将数据导出为 CSV、JSON 两种格式。

✅ 抽象模板类

class DataExporter {
public:void exportData() {readData();formatData();writeToFile();}virtual ~DataExporter() = default;protected:virtual void readData() {std::cout << "读取原始数据..." << std::endl;}virtual void formatData() = 0; // 子类必须实现virtual void writeToFile() {std::cout << "写入文件完成。" << std::endl;}
};

✅ 子类实现(CSV 导出器)

class CsvExporter : public DataExporter {
protected:void formatData() override {std::cout << "格式化为 CSV 格式..." << std::endl;}
};

✅ 子类实现(JSON 导出器)

class JsonExporter : public DataExporter {
protected:void formatData() override {std::cout << "格式化为 JSON 格式..." << std::endl;}
};

✅ 使用代码

int main() {std::unique_ptr<DataExporter> exporter;exporter = std::make_unique<CsvExporter>();exporter->exportData();exporter = std::make_unique<JsonExporter>();exporter->exportData();return 0;
}

五、特点总结:优点与缺点

✅ 优点:

  • 代码复用性高:流程写一遍,子类共享结构
  • 扩展灵活:只需重写步骤函数即可扩展新行为
  • 强制执行顺序:子类无法篡改流程结构

❗ 缺点:

  • 增加类数量(每种行为都要写个子类)
  • 对子类开发者要求较高(必须理解父类结构)

六、实战场景参考

场景名称模板流程说明
报表导出引擎读取数据 → 格式化 → 输出 CSV/JSON/Excel
编译器前端词法分析 → 语法分析 → 语义分析 → 生成中间码
网络协议处理接收请求 → 校验 → 解包 → 应答
游戏生命周期Init → Start → Update → Destroy
业务模板系统加载配置 → 数据处理 → 日志记录

七、与策略模式的对比回顾

模式模板方法模式策略模式
目的固定流程 + 可定制步骤动态切换算法
调用者角色调用方始终调用 templateMethod()外部显式切换策略对象
子类行为控制力只允许重写“步骤”,流程固定每个策略完全独立

八、面试回答模板

“我们有一套导出系统使用模板方法模式设计。父类封装了导出的主流程,子类如 CsvExporter 和 JsonExporter 只需要重写格式化步骤。这样可以保证流程的一致性,并方便后期扩展其他格式(如 XML、Excel),而不影响整体框架。”

✅ 加分项:结合生命周期钩子、数据处理框架,强调“一致性 + 定制性”。


九、记忆口诀

“流程归一父类写,细节自留子类做,钩子控制定结构,复用规范皆不破。”


十、明日预告:Day 11

责任链模式(Chain of Responsibility):事件/请求依次传递,灵活组合处理链条,打造解耦的响应系统。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com