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

【设计模式】Template Method伪代码

1. 不好的代码

1.1 lib.cpp

class Library{
public:void Step1(){//...}void Step3(){//...}void Step5(){//...}
};

1.2 app.cpp

class Application{
public:bool Step2(){//...}void Step4(){//...}
};int main()
{Library lib();Application app();lib.Step1();if(app.Step2()){lib.Step3();}for(int i=0; i<4; i++){app.Step4();}lib.Step5();
}

1.3 概括

在这里插入图片描述

2. 好的代码

2.1 lib.cpp

class Library{
public://稳定 template methodvoid Run(){Step1();if(Step2()){	//支持变化 ==> 虚函数的多态调用Step3();}for(int i=0; i<4; i++){Step4();	//支持变化 ==> 虚函数的多态调用}Step5();}virtual ~Library(){ }protected:void Step1(){ //稳定//...}void Step3(){ //稳定//...}void Step5(){ //稳定//...}virtual bool Step2() = 0;	//变化virtual void Step4() = 0;	//变化};

2.2 app.cpp

class Application : public Library{
protected:virtual bool Step2(){//... 子类重写实现}virtual void Step4(){//... 子类重写实现}
};int main()
{Library* pLib = new Application();pLib->Run();delete pLib;
}

2.3 概括

在这里插入图片描述


http://www.mrgr.cn/news/23611.html

相关文章:

  • 摩尔投票算法--169. 多数元素
  • 解锁精准电商营销新纪元:深度剖析京东商品详情API数据驱动的营销策略
  • 请问什么样的文献管理软件比较好用,用了zotero发现不会用?
  • 陶建辉演讲干货分享,AI 时代下的数据预测和数据处理挑战
  • Linux CentOS更换阿里云源解决Could not retrieve mirrorlist http://mirrorlist.centos.org
  • 笔试强训day07
  • 电信AEP平台WEB在线开发经验总结
  • 基于单片机一种风速测量仪的设计
  • 判断语句(C语言)
  • 01:电子移动速度/电阻大小与功率大小
  • (一)NoSQL之 【Redis配置】
  • 比较:#define,const,typedef
  • 为什么HashTable慢? 它的并发度是什么? 那么ConcurrentHashMap并发度是什么?
  • AI在医学领域:HMARL首个多器官诊断AI框架
  • 智能交通(三)——Elsevier特刊推荐
  • Redis中String类型的基本命令
  • 漏洞挖掘 | 某系统中少见的前端登录校验
  • Selenium与Qt应用:自动化与GUI结合实践
  • 【运维方案】信息系统运维方案(Word完整版)
  • 灭火器目标检测数据集 3700张 灭火器 带标注 voc yolo