当前位置: 首页 > wzjs >正文

做网站国外访问东莞网站营销推广

做网站国外访问,东莞网站营销推广,邯郸二手房出售信息,做响应式网站对设计图的要求核心思想 模板方法设计模式是一种行为设计模式,它定义了一个算法的框架,并将某些步骤的具体实现延迟到子类中。通过这种方式,模板方法模式允许子类在不改变算法结构的情况下重新定义算法的某些步骤。 模板方法模式的核心在于: ​…

核心思想

模板方法设计模式是一种行为设计模式,它定义了一个算法的框架,并将某些步骤的具体实现延迟到子类中。通过这种方式,模板方法模式允许子类在不改变算法结构的情况下重新定义算法的某些步骤。

模板方法模式的核心在于:
​1、定义一个算法的骨架:在父类中定义一个模板方法,该方法包含算法的步骤。
​2、延迟实现:将某些步骤的具体实现交给子类来完成。

使用场景

​固定流程,可变实现:当算法的整体流程是固定的,但某些步骤的具体实现可能不同时。
​代码复用:当多个类有相似的算法结构,但某些步骤的实现不同时,可以通过模板方法模式避免代码重复。
​框架设计:在框架设计中,模板方法模式常用于定义框架的核心流程,同时允许用户自定义某些步骤。

优点

​代码复用:将公共的算法逻辑放在父类中,避免重复代码。
​扩展性:子类可以灵活地重写某些步骤,而不影响算法的整体结构。
​控制流程:父类控制算法的流程,子类只负责实现细节。

缺点

​灵活性受限:由于算法的流程是固定的,子类只能改变某些步骤的实现,不能改变整体流程。
​继承的缺点:模板方法模式依赖于继承,如果子类过多,可能会导致类层次结构复杂。

示例代码

#include <iostream>
#include <string>// 抽象基类:定义模板方法
class DocumentProcessor {
public:// 模板方法:定义算法的骨架void processDocument() {openDocument();readDocument();if (needAnalyze()) {analyzeDocument();}saveDocument();closeDocument();}virtual ~DocumentProcessor() = default;protected:// 具体步骤的默认实现virtual void openDocument() {std::cout << "Opening document..." << std::endl;}virtual void readDocument() {std::cout << "Reading document..." << std::endl;}virtual void analyzeDocument() {std::cout << "Analyzing document..." << std::endl;}virtual void saveDocument() {std::cout << "Saving document..." << std::endl;}virtual void closeDocument() {std::cout << "Closing document..." << std::endl;}// 钩子方法:子类可以重写以改变算法的行为virtual bool needAnalyze() {return true;}
};// 具体子类:实现特定类型的文档处理
class PDFProcessor : public DocumentProcessor {
protected:void openDocument() override {std::cout << "Opening PDF document..." << std::endl;}void saveDocument() override {std::cout << "Saving PDF document..." << std::endl;}bool needAnalyze() override {return false;  // PDF 文档不需要分析}
};// 具体子类:实现另一种类型的文档处理
class WordProcessor : public DocumentProcessor {
protected:void openDocument() override {std::cout << "Opening Word document..." << std::endl;}void analyzeDocument() override {std::cout << "Analyzing Word document for spelling errors..." << std::endl;}void saveDocument() override {std::cout << "Saving Word document..." << std::endl;}
};int main() {// 处理 PDF 文档DocumentProcessor* pdfProcessor = new PDFProcessor();pdfProcessor->processDocument();delete pdfProcessor;std::cout << "------------------------" << std::endl;// 处理 Word 文档DocumentProcessor* wordProcessor = new WordProcessor();wordProcessor->processDocument();delete wordProcessor;return 0;
}

输出结果

Opening PDF document...
Reading document...
Saving PDF document...
Closing document...
------------------------
Opening Word document...
Reading document...
Analyzing Word document for spelling errors...
Saving Word document...
Closing document...

代码解析

DocumentProcessor 类
定义了模板方法 processDocument(),它包含了文档处理的固定流程。
提供了默认的步骤实现(如 openDocument()、readDocument() 等)。
提供了一个钩子方法 needAnalyze(),子类可以重写以改变算法的行为。
PDFProcessor 和 WordProcessor 类
继承自 DocumentProcessor,重写了某些步骤的具体实现。
PDFProcessor 禁用了分析步骤,而 WordProcessor 提供了特定的分析逻辑。
main 函数
分别使用 PDFProcessor 和 WordProcessor 处理文档,展示了模板方法模式的灵活性。

http://www.dtcms.com/wzjs/491452.html

相关文章:

  • 嵊州市网站建设友情链接交换形式
  • 创网站 灵感百度域名收录提交入口
  • 服装手机商城网站建设网站建设的流程是什么
  • 豫港大厦 做网站seo关键词排名报价
  • 手机做网站空间360搜索首页
  • wordpress仿站博客视频教程打广告去哪个平台
  • 上线了 建立网站西安网站建设优化
  • 代理加盟微信网站建设郑州竞价代运营公司
  • 云南响应式网站建设seo服务顾问
  • 电子商务网站建设毕业论文抖音seo推广
  • 网站建设的基本流程是什么百度一下百度首页官网
  • 视觉传达设计公司排名前十强慧达seo免登录发布
  • 做美国代购的都从哪个网站买南昌seo优化
  • 如何做英文网站的中文网2021年网络热点舆论
  • 给静态网站加后台百度起诉seo公司
  • 网页设计心得体会600字嘉兴seo外包公司费用
  • 怎么做好销售优化落实疫情防控新十条
  • 政府网站集约化建设有什么作用软文有哪些
  • b站推广是什么互联网广告代理可靠吗
  • wordpress表单提交 阿里云邮箱泉州seo外包
  • 预约营销型网站建设专家著名营销策划公司
  • 南京秦淮区建设局网站今日头条收录入口
  • 做美团旅游网站多少钱可以搜索任何网站的浏览器
  • 银川市住房和城乡建设局网站公告快速开发平台
  • 制作作业平台网站的设计在线外链发布工具
  • 昆明网站优化开发软件app需要多少钱
  • wordpress 网络公司石家庄seo关键词
  • 青岛企业做网站市场营销四大基本策略
  • 天津建设交培训中心网站锦州seo推广
  • 做的比较唯美的网站百度贴吧官网入口