ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 概述 **模板方法模式**是一种行为设计模式,它在超类中定义了一个算法的框架,允许子类在不修改结构的情况下重写算法的特定步骤。 - 某些步骤可在基类中直接实现。 - 某些可定义为抽象类型。 - 模板方法定义了某个算法的框架 - 一个类可包含多个模板方法 ## 问题 该程序的首个版本仅支持 DOC 文件。在接下来的一个版本中,程序能够支持 CSV 文件。一个月后,你“教会”了程序从 PDF 文件中抽取数据。 ![](https://img.kancloud.cn/fe/90/fe9001a5f036c1cb4bb5ff186f56ceef_1240x920.png) ## 模式结构 ![](https://img.kancloud.cn/c0/38/c038fae158248955c4d5446724d2ac91_680x760.png) 1. **抽象类**(Abstract­Class)会声明作为算法步骤的方法,以及依次调用它们的实际模板方法。算法步骤可以被声明为`抽象`类型,也可以提供一些默认实现。 2. **具体类**(Concrete­Class)可以重写所有步骤,但不能重写模板方法自身。 ## 应用场景 1. 当你只希望客户端扩展某个特定算法步骤, 而不是整个算法或其结构时, 可使用模板方法模式。 2. 当多个类的算法除一些细微不同之外几乎完全一样时, 你可使用该模式。 但其后果就是, 只要算法发生变化, 你就可能需要修改所有的类。